<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    捕風(fēng)之巢

    統(tǒng)計

    留言簿(3)

    java友情鏈接

    閱讀排行榜

    評論排行榜

    流行開源數(shù)據(jù)庫hsql

    前言:該文章只是簡單介紹一下hsql的入門內(nèi)容,如果想仔細(xì)了解的話,參考官方幫助文檔最為有用。
    ??? 修正添加了第四點。

    一、簡介:
    hsql 數(shù)據(jù)庫是一款純Java編寫的免費數(shù)據(jù)庫,許可是BSD-style的協(xié)議,如果你是使用Java編程的話,不凡考慮一下使用它,相對其他數(shù)據(jù)庫來說,其體積小,才563kb。僅一個hsqldb.jar文件就包括了數(shù)據(jù)庫引擎,數(shù)據(jù)庫驅(qū)動,還有其他用戶界面操作等內(nèi)容。在Java開源世界里,hsql是極為受歡迎的(就Java本身來說),JBoss應(yīng)用程序服務(wù)器默認(rèn)也提供了這個數(shù)據(jù)庫引擎。由于其體積小的原因,又是純Java設(shè)計,又支持 SQL99,SQL2003大部分的標(biāo)準(zhǔn),所以也是作為商業(yè)應(yīng)用程序展示的一種選擇。請到以下地址下載hsql: http://prdownloads.sourceforge.net/hsqldb/

    二、使用hsql數(shù)據(jù)庫:
    1、hsql數(shù)據(jù)庫引擎有幾種服務(wù)器模式:常用的Server模式、WebServer模式、Servlet模式、Standlone模式、Memory-Only數(shù)據(jù)庫。
    2、最為常用的Server模式:
    1)首先卻換到lib文件夾下,運行java -cp hsqldb.jar org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb
    執(zhí)行命令后,將會在db文件夾下創(chuàng)建一個數(shù)據(jù)庫mydb,別名(用于訪問數(shù)據(jù)庫)是xdb,如果存在mydb數(shù)據(jù)庫,將會打開它。
    2)運行數(shù)據(jù)庫界面操作工具:java -cp hsqldb.jar org.hsqldb.util.DatabaseManager
    在Type 選項里選上相應(yīng)的服務(wù)器模式,這里選擇HSQL Database Engine Server模式;Driver不用修改;URL修改為jdbc:hsqldb:hsql://localhost/xdb (主要這里xdb就是上面我們設(shè)置的別名);user里設(shè)置用戶名,第一次登錄時,設(shè)置的是管理員的用戶名,password設(shè)置密碼。然后點擊Ok。
    3)第一次運行數(shù)據(jù)庫引擎,創(chuàng)建數(shù)據(jù)庫完畢。好了,你可以打開db文件夾,會發(fā)現(xiàn)里面多了幾個文件。
    mydb.properties文件:是關(guān)于數(shù)據(jù)庫的屬性文件。
    mydb.script:hsql主要保存的表(這里按hsql的說法是Memory表,就是最為常用的),里面的格式都是文本格式,可以用文本查看,里面的語句都是sql語句,熟悉sql語句的話,你也可以手動修改它。每次運行數(shù)據(jù)庫引擎的話都是從這里加載進內(nèi)存的。
    mydb.lck表示數(shù)據(jù)庫處于打開狀態(tài)。
    其他的請參看hsqldb包里的手冊。

    3、WebServer模式和Server運行模式基本一樣,只是支持了Http等協(xié)議,主要用于防火墻,默認(rèn)端口是9001。啟動Server,java -cp hsqldb.jar org.hsqldb.WebServer ...剩余的和上面的一致。

    4、Servlet模式可以允許你通過Servlet容器來訪問數(shù)據(jù)庫,請查看hsqlServlet.java的源代碼,和WebServer類似。

    5、另一個值得思考的模式是
    Standalone模式:不能通過網(wǎng)絡(luò)來訪問數(shù)據(jù)庫,主要是在一個JVM中使用,那樣的話,訪問的速度會更加快。雖然文檔里面提到主要是用于開發(fā)時使用,但是我們可以假設(shè)一下,該方法不需要一個引擎類的東西,而類似于打開文件的方式,返回一個Connection對象:
    Connection c = DriverManager.getConnection("jdbc:hsqldb:file:mydb", "sa", "");
    將會在當(dāng)前目錄找到mydb數(shù)據(jù)庫相關(guān)文件,打開并返回一個Connection對象。該方式有點好處就是可以不使用引擎,在需要的時候操作數(shù)據(jù)。所以那些對數(shù)據(jù)庫不是特別有要求的,但又需要一個操作數(shù)據(jù)庫的方式的話,可以使用這種方法。對于那些不想額外在數(shù)據(jù)庫引擎花費金錢的話,可以使用這種方法。但是不推薦使用該方法。記得Hibernate里SessionFactory可以使用openSession(Connecttion c)來獲得一個Session對象的,因此,在測試或者實際應(yīng)用的話都可以這樣使用。

    6、Memory-Only 數(shù)據(jù)庫:顧名思義,主要是內(nèi)存中使用,不用于保存數(shù)據(jù)。可以用于在內(nèi)存中交換數(shù)據(jù)。

    三、具體的鏈接與操作的話,和一般的JDBC操作一樣。而相應(yīng)的Server模式的話,連接地址主要你運行數(shù)據(jù)庫界面操作工具時,在URL一欄時默認(rèn)已經(jīng)設(shè)好了,自己實習(xí)一下,對比其中參數(shù)。

    四、實例:
    在Windows下使用:
    ??????? 由于我們經(jīng)常使用的是hibernate等orm工具作為數(shù)據(jù)層,所以很多時候?qū)Φ讓拥膕ql都不再關(guān)注。通常我們都交由hibernate等工具來替我們管理數(shù)據(jù)庫連接等內(nèi)容,經(jīng)常我們只需要學(xué)會運行數(shù)據(jù)庫就足夠了。
    ?????? 為了簡化操作,我們可以創(chuàng)建一個bat腳本(runhsql.bat)該腳本只需要和hsql.jar在一起,我們通常使用的是server模式:
    ????? (1)runhsql.bat的內(nèi)容:
    ????????? start? java? -cp? hsqldb.jar? org.hsqldb.Server
    ????? (2)server.properties
    ?????????? server.database.0=db/appfuse1
    ?????????? server.dbname.0=appfuse1
    ?????????? server.database.1=db/appfuse2
    ?????????? server.dbname.1=appfuse2
    ???? 運行runhsql.bat之后,將會在db文件夾下創(chuàng)建兩個數(shù)據(jù)庫文件,別名為appfuse1和appfuse2
    相應(yīng)的例子:hibernate.xml文件簡單配置:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
    ??? ?? ?"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    ??? ?? ?"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
    ??? <session-factory>
    ??????? <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
    ??????? <property name="hibernate.connection.url">jdbc:hsqldb:hsql://localhost/appfuse1</property>
    ??????? <property name="hibernate.connection.username">sa</property>
    ??????? <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
    ???????
    ??????? <property name="show_sql">true</property>
    ???????
    ??????? <!-- Enable Hibernate's automatic session context management -->
    ??????? <property name="current_session_context_class">thread</property>
    ???????
    ??????? <!-- Drop and re-create the database schema on startup -->
    ??????? <property name="hbm2ddl.auto">create</property>
    ??? </session-factory>
    </hibernate-configuration>??????
    ??????

    對這篇文章有什么問題的話,請留言給作者。作者聯(lián)系地址:Sidney.J.Yellow@gmail.com

    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=373652

    posted on 2006-10-16 15:49 捕風(fēng) 閱讀(272) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫技術(shù)

    主站蜘蛛池模板: 久久久久久精品成人免费图片| 亚洲精品国产suv一区88| 香蕉免费看一区二区三区| 亚洲?V无码乱码国产精品| 国产成人综合亚洲| 四虎影库久免费视频| 日产久久强奸免费的看| 国产午夜亚洲精品理论片不卡 | 国产无遮挡吃胸膜奶免费看视频| 亚洲人成www在线播放| 在线看片人成视频免费无遮挡| 亚洲大码熟女在线观看| 亚洲不卡无码av中文字幕| 亚洲黄片手机免费观看| 亚洲s色大片在线观看| 亚洲精品视频免费在线观看| 久久精品国产亚洲AV蜜臀色欲 | 男女一边摸一边做爽的免费视频| 国产亚洲精品岁国产微拍精品| 久久国产精品一区免费下载| 亚洲一区二区三区久久久久| 日本免费高清一本视频| 久久99精品免费一区二区| 911精品国产亚洲日本美国韩国| 91香蕉视频免费| 午夜在线亚洲男人午在线| 亚洲精品乱码久久久久久按摩| 最近中文字幕大全中文字幕免费| 亚洲综合无码无在线观看| 国产乱人免费视频| 国产免费爽爽视频在线观看| 亚洲性无码av在线| 亚洲国产精品一区二区三区久久| 免费一级毛片无毒不卡| 亚洲中文字幕无码一去台湾| 亚洲精品无码专区2| 57pao一国产成永久免费| 美女尿口扒开图片免费| 亚洲国产精品免费视频| 国产男女猛烈无遮挡免费网站| 无人在线观看免费高清|