日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Hsqldb簡(jiǎn)介和使用方法

Hsqldb是一個(gè)開(kāi)放源代碼的JAVA數(shù)據(jù)庫(kù),其具有標(biāo)準(zhǔn)的SQL語(yǔ)法和JAVA接口,它可以自由使用和分發(fā),非常簡(jiǎn)潔和快速的。具有Server模式,進(jìn)程內(nèi)模式(In-Process)和內(nèi)存模式(Memory-Only)三種。運(yùn)行Hsqldb需要hsqldb.jar包, 它包含了一些組件和程序。每個(gè)程序需要不同的命令來(lái)運(yùn)行。它位于項(xiàng)目的lib目錄下,目前的版本是1.8.0.5。官方的下載地址是:http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_8_0_5.zip?download

專(zhuān)業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來(lái)客戶(hù)和效益!成都創(chuàng)新互聯(lián)公司為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)負(fù)責(zé)任的成都網(wǎng)站制作公司!

在介紹這些模式之前我們需要了解一些Hsqldb所涉及的一些文件。每個(gè)Hsqld數(shù)據(jù)庫(kù)包含了2到5個(gè)命名相同但擴(kuò)展名不同的文件,這些文件位于同一個(gè)目錄下。例如,名位"test"的數(shù)據(jù)庫(kù)包含了以下幾個(gè)文件:

?test.properties

?test.script

?test.log

?test.data

?test.backup

properties文件描述了數(shù)據(jù)庫(kù)的基本配置。 script文件記錄了表和其它數(shù)據(jù)庫(kù)對(duì)象的定義。log文件記錄了數(shù)據(jù)庫(kù)最近所做的更新。data文件包含了cached(緩沖)表的數(shù)據(jù),而backup文件是將data文件壓縮備份,它包含了data文件上次的最終狀態(tài)數(shù)據(jù)。所有這些文件都是必不可少的,千萬(wàn)不可擅自刪除。但如果你的數(shù)據(jù)庫(kù)沒(méi)有緩沖表(cached table),test.data和test.backup文件是不會(huì)存在。

接下來(lái)我們對(duì)Hsqldb的三種模式進(jìn)行簡(jiǎn)單介紹,同時(shí)包括部分工具的啟動(dòng)的方式。

一、 Server模式

Server模式提供了最大的可訪(fǎng)問(wèn)性。應(yīng)用程序(客戶(hù)端)通過(guò)Hsqldb的JDBC驅(qū)動(dòng)連接服務(wù)器。在服務(wù)器模式中,服務(wù)器在運(yùn)行的時(shí)候可以被指定為最多10個(gè)數(shù)據(jù)庫(kù)。根據(jù)客戶(hù)端和服務(wù)器之間通信協(xié)議的不同,Server模式可以分為以下三種:

1、 Hsqldb Serve

這種模式是首選的也是最快的。它采用HSQLDB專(zhuān)有的通信協(xié)議。啟動(dòng)服務(wù)器需要編寫(xiě)批處理命令。Hsqldb提供的所有工具都能以java class歸檔文件(也就是jar)的標(biāo)準(zhǔn)方式運(yùn)行。假如hsqldb.jar位于相對(duì)于當(dāng)前路徑的../lib下面。我們的命令將這樣寫(xiě):

java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mydb -dbname.0 demoDB

現(xiàn)在你可能會(huì)疑惑,[-database.0 ]、 [dbname.0]為什么在后面加[0]。_... ...我們不是在前面說(shuō)服務(wù)模式運(yùn)行的時(shí)候可以指定10個(gè)數(shù)據(jù)庫(kù)嗎,如有多個(gè)數(shù)據(jù)庫(kù),則繼續(xù)寫(xiě)命令行參數(shù)-database.1 aa -dbname.1 aa -database.2 bb-dbname.2 bb ... ...

新建文本文件保存上面命令,文件名可以隨意,將后綴名改成bat,然后直接執(zhí)行批處理文件即可。在以后介紹的執(zhí)行啟動(dòng)工具的命令采用同樣方法。

上面啟動(dòng)服務(wù)器的命令啟動(dòng)了帶有一個(gè)(默認(rèn)為一個(gè)數(shù)據(jù)庫(kù))數(shù)據(jù)庫(kù)的服務(wù)器,這個(gè)數(shù)據(jù)庫(kù)是一個(gè)名為"mydb.*"文件,這些文件就是mydb.Properties、mydb.script、mydb.log等文件。其中demoDB是mydb的別名,可在連接數(shù)據(jù)庫(kù)時(shí)使用。

2、 Hsqldb Web Server

 這種模式只能用在通過(guò)HTTP協(xié)議訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)服務(wù)器主機(jī),采用這種模式唯一的原因是客戶(hù)端或服務(wù)器端的防火墻對(duì)數(shù)據(jù)庫(kù)對(duì)網(wǎng)絡(luò)連接強(qiáng)加了限制。其他情況下,這種模式不推薦被使用。

 運(yùn)行web服務(wù)器的時(shí)候,只要將剛才命令行中的主類(lèi)(main class)替換成:org.hsqldb.WebServer

3、 Hsqldb Servlet

這種模式和Web Server一樣都采用HTTP協(xié)議,當(dāng)如Tomcat或Resin等servlet引擎(或應(yīng)用服務(wù)器)提供數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)時(shí),可以使用這種模式。但是Servlet模式不能脫離servlet引擎獨(dú)立啟動(dòng)。為了提供數(shù)據(jù)庫(kù)的連接,必須將HSQLDB.jar中的hsqlServlet類(lèi)放置在應(yīng)用服務(wù)器的相應(yīng)位置。

Web Server和Servlet模式都只能在客戶(hù)端通過(guò)JDBC驅(qū)動(dòng)來(lái)訪(fǎng)問(wèn)。Servlet模式只能啟動(dòng)一個(gè)單獨(dú)的數(shù)據(jù)庫(kù)。請(qǐng)注意做為應(yīng)用程序服務(wù)器的數(shù)據(jù)庫(kù)引擎通常不使用這種模式。

連接到以Server模式運(yùn)行的數(shù)據(jù)庫(kù)

當(dāng)HSQLDB服務(wù)器運(yùn)行時(shí),客戶(hù)端程序就可以通過(guò)hsqldb.jar中帶有的HSQLDB JDBC Driver連接數(shù)據(jù)庫(kù)。

java 代碼

 
 
 
  1. try{      
  2.      
  3.         Class.forName("org.hsqldb.jdbcDriver") ;      
  4.     
  5. }catch(ClassNotFoundException e){      
  6.      
  7.         e.printStackTrace();        
  8.     
  9.  }      
  10.      
  11.      Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb", "sa", "");      
  12.     

注:hsqldb的默認(rèn)用戶(hù)是sa密碼為空。修改默認(rèn)密碼的方法我們將在工具使用部分做出介紹。

二、 In-Process模式

In-Process模式又稱(chēng)Standalone模式。這種模式下,數(shù)據(jù)庫(kù)引擎作為應(yīng)用程序的一部分在同一個(gè)JVM中運(yùn)行。對(duì)于一些應(yīng)用程序來(lái)說(shuō), 這種模式因?yàn)閿?shù)據(jù)不用轉(zhuǎn)換和通過(guò)網(wǎng)絡(luò)的傳送而使得速度更快一些。其主要的缺點(diǎn)就是默認(rèn)的不能從應(yīng)用程序外連接到數(shù)據(jù)庫(kù)。所以當(dāng)應(yīng)用程序正在運(yùn)行的時(shí)候,你不能使用類(lèi)似于Database Manager的外部工具來(lái)查看數(shù)據(jù)庫(kù)的內(nèi)容。在 1.8.0 版本中,你可以從同一個(gè)JVM的一個(gè)線(xiàn)程里面來(lái)運(yùn)行一個(gè)服務(wù)器實(shí)例,從而可以提供外部連接來(lái)訪(fǎng)問(wèn)你的In-Process數(shù)據(jù)庫(kù)。

推薦的使用In-Process模式方式是:開(kāi)發(fā)的時(shí)候?yàn)閿?shù)據(jù)庫(kù)使用一個(gè)HSQLDB 服務(wù)器實(shí)例,然后在部屬的時(shí)候轉(zhuǎn)換到In-Process內(nèi)模式。

一個(gè)In-Process模式數(shù)據(jù)庫(kù)是從JDBC語(yǔ)句開(kāi)始啟動(dòng)的,在連接URL中帶有指定的數(shù)據(jù)庫(kù)文件路徑作為JDBC的一部分。例如,假如數(shù)據(jù)庫(kù)名稱(chēng)為testdb,它的數(shù)據(jù)庫(kù)文件位于與確定的運(yùn)行應(yīng)用程序命令相同的目錄下,下面的代碼可以用來(lái)連接數(shù)據(jù)庫(kù):

Connection c = DriverManager.getConnection("jdbc:hsqldb:file:testdb ", "sa", "");

數(shù)據(jù)庫(kù)文件的路徑格式在Linux主機(jī)和Windows主機(jī)上都被指定采用前斜線(xiàn)("/")。所以相對(duì)路徑或者是相對(duì)于相同分區(qū)下相同目錄路徑的表達(dá)方式是一致的。使用相對(duì)路徑的時(shí)候,這些路徑表示的是相對(duì)于用于啟動(dòng)JVM的shell命令的執(zhí)行路徑。

三、Memry-Only數(shù)據(jù)庫(kù)

Memory-Only數(shù)據(jù)庫(kù)不是持久化的而是全部在隨機(jī)訪(fǎng)問(wèn)的內(nèi)存中。因?yàn)闆](méi)有任何信息寫(xiě)在磁盤(pán)上。這種模式通過(guò)mem:協(xié)議的方式來(lái)指定:

Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:dbName", "sa", "");

你也可以在server.properties中指定相同的URL來(lái)運(yùn)行一個(gè)Memory-Only(僅處于內(nèi)存中)服務(wù)器實(shí)例。

注意事項(xiàng):當(dāng)一個(gè)服務(wù)器實(shí)例啟動(dòng)或者建立一個(gè)in-process數(shù)據(jù)庫(kù)連接的時(shí)候,如果指定的路徑?jīng)]有數(shù)據(jù)庫(kù)存在,那么就會(huì)創(chuàng)建一個(gè)新的空的數(shù)據(jù)庫(kù)。這個(gè)特點(diǎn)的副作用就是讓那些新用戶(hù)產(chǎn)生疑惑。在指定連接已存在的數(shù)據(jù)庫(kù)路徑的時(shí)候,如果出現(xiàn)了什么錯(cuò)誤的話(huà),就會(huì)建立一個(gè)指向新數(shù)據(jù)庫(kù)的連接。為了解決這個(gè)問(wèn)題,你可以指定一個(gè)連接屬性ifexists=true只允許和已存在的數(shù)據(jù)庫(kù)建立連接而避免創(chuàng)建新的數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)不存在的話(huà),getConnection()方法將會(huì)拋出異常。

四、 工具的使用

Hsqldb提供的主要的工具類(lèi):

?org.hsqldb.util.DatabaseManager

?org.hsqldb.util.DatabaseManagerSwing

?org.hsqldb.util.Transfer

?org.hsqldb.util.QueryTool

?org.hsqldb.util.SqlTool

其中DatabaseManage和Sql Tool,只能用命令行參數(shù)來(lái)運(yùn)行。你可以在命令行后面加上參數(shù)-?來(lái)查看這些工具可用的參數(shù)列表。其他工具可以通過(guò)DatabaseManager的主界面啟動(dòng),便于交互式操作。

為了便于操作,我們同樣把這些工具啟動(dòng)的命令做成批處理文件。方法和前面我們所介紹的創(chuàng)建啟動(dòng)服務(wù)模式命令的方法一樣。在這里我們?cè)購(gòu)?qiáng)調(diào)一次hsqldb.jar的位置,因?yàn)樗袉?dòng)命令都是參照hsqldb.jar的位置編寫(xiě)的

如果您覺(jué)得麻煩你也可以采用絕對(duì)路徑編寫(xiě)命令。

現(xiàn)在我們一起運(yùn)行AWT版本的DatabaseManager工具,hsqldb.jar位于相對(duì)于當(dāng)前路徑的../lib下面,命令如下:

Java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManager

將命令保存為后綴名為bat的批處理文件,保存為DatabaseManager.bat,也可根據(jù)個(gè)人習(xí)慣命名。執(zhí)行DatabaseManager.bat你將看到如下畫(huà)面:。

現(xiàn)在對(duì)這個(gè)簡(jiǎn)潔的登錄界面做個(gè)簡(jiǎn)單的介紹*_*

?Recent:選擇你最近的登錄方案,[可選]

?Setting Name:本次登錄方案名稱(chēng),如果本次登錄成功,那么等你下次登錄的時(shí)候在Recent下拉列表中將看到你的成功登錄方案[可選]

?Type:登錄模式,其中包括In-Memory模式、Standalone(In-process)模式、Server模式、WebServer模式... ...[必選]

?Driver:連接數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序[必選]

?URL:連接數(shù)據(jù)庫(kù)的URL[必選]

?User:用戶(hù)名[必選]

?Password:密碼[ 除非密碼為空]

注:如果Type項(xiàng)選擇Server模式或者WebServer模式需要你事先啟動(dòng)與之對(duì)應(yīng)的服務(wù)模式。而Standalone(In-process)默認(rèn)是不支持DatabaseManager連接的,具體原因我們已經(jīng)在前面解釋過(guò)。至于In-Memory可以隨意登錄,所有的操作數(shù)據(jù)都不會(huì)記錄在本地磁盤(pán)。而Type還有很多其他選項(xiàng),具體的用法可以參考官方文檔,位置在hsqldb目錄\doc\guide\ guide.pdf。

如果你想運(yùn)行DatabaseManagerSwing也很簡(jiǎn)單,相信你已經(jīng)想到了。我們只需要把啟動(dòng)DatabaseManager命令修改成:

Java -cp ../lib/hsqldb.jar org.hsqldb.util. DatabaseManagerSwing

兩種工具的操作方法類(lèi)似,這里就不再贅述。

差點(diǎn)忘記,前面我說(shuō)過(guò)要給出修改sa用戶(hù)密碼的方法。最后再占用大家一點(diǎn)點(diǎn)時(shí)間。當(dāng)你用SA通過(guò)DatabaseManager登錄成功后會(huì)出現(xiàn)如下界面:

在右上方的空白區(qū)域輸入set password "newpassword" 點(diǎn)擊執(zhí)行即可。

到這里我們對(duì)Hsqldb的簡(jiǎn)單介紹就結(jié)束了。

本文參考自Hsqldb的官方文檔,個(gè)人水平有限難免出現(xiàn)錯(cuò)誤。

【編輯推薦】

  1. Eclipse尋找JVM(JRE)順序機(jī)制
  2. 深入學(xué)習(xí)JVM內(nèi)存設(shè)置原理和調(diào)優(yōu)
  3. JAVA字節(jié)碼文件操作技巧
  4. 巧解使Eclipse崩潰的JVM terminated問(wèn)題
  5. 解決JVM Terminated.ExitCode=-1問(wèn)題行之有效的方法

本文標(biāo)題:Hsqldb簡(jiǎn)介和使用方法
分享網(wǎng)址:http://www.dlmjj.cn/article/cdpdsih.html