日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HsqlDB使用

發布時間:2023/12/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HsqlDB使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源:http://blog.csdn.net/xubo578/article/details/5191061

服務的安裝,下載解壓即安裝?

HSQLDB服務器模式的啟動方法?
In-Process、Memory-Only模式無需另外啟動HSQLDB?
服務器模式的處理流程(創建和啟動mydb數據庫):?
1.?數據庫安裝文件跟目錄,創建mydb文件夾?
2.?創建runMydb.bat?
java -cp ../lib/hsqldb.jar org.hsqldb.Server -database mydb?
或?
java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mydb -dbname.0 mydb?
3.?創建manageMydb.bat?
java -cp ../lib/hsqldb.jar org.hsqldb.Server -database mydb?
或?
java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mydb -dbname.0 mydb?
4.?主要的工具類?
org.hsqldb.util.DatabaseManager?
org.hsqldb.util.DatabaseManagerSwing?
org.hsqldb.util.Transfer?
org.hsqldb.util.QueryTool?
org.hsqldb.util.SqlTool?
5.?使用JDBC連接HSQLDB數據庫?
try {?
??????? Class.forName("org.hsqldb.jdbcDriver" );?
??? } catch (Exception e) {?
??????? System.out.println("ERROR: failed to load HSQLDB JDBC driver.");?
??????? e.printStackTrace();?
??????? return;?
??? }?

??? Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/mydb", "sa", "");?
6. Hibernate中使用HSQLDB hibernate.cfg.xml?
7. <hibernate-configuration>?
??? <session-factory>?
...?
??????? <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>?
????????
??????? <property name="connection.url">jdbc:hsqldb:hsql://localhost/mydb</property>?
??????? <property name="connection.username">sa</property>?
??????? <property name="connection.password"></property>?
????????
??????? <property name="dialect">org.hibernate.dialect.HSQLDialect</property>?
...?
??? </session-factory>?
</hibernate-configuration>?

8.?????數據庫具體表、數據的創建應該可以在?manage客戶端進行(一般都是applet或者web頁面)?



本地聯系? mytest數據庫,通過?管理客戶端進行數據庫的設計?
問題:?HSQL的SQL語句的規則?

通過link(http://zeroliu.blogdriver.com/zeroliu/1242671.html)的學習了解到?HSQL號稱內存數據,在內存模式下所有數據不會保持;單機、服務器等模式下?所有的數據庫操作會保存到一個?database.script?中,再次啟動HSQLDB的時候?會快速的運行這個腳本回復數據庫?
1.內存駐留模式中只允許有一個數據庫連接,所以在進行處理的時候要注意數據庫連接的釋放?
Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:aname", "sa", "");?


2.單機模式,應用程序使用JDBC創建數據庫連接,并且hsqldb引擎作為應用程序的一部分運行在同一個jvm之下。此時數據庫只允許一個應用去訪問,也就是應用程序無法和數據庫管理同時進行,適合部署模式?
jdbc:hsqldb:zzq?
或者?jdbc:hsqldb:c:/db/zzq?

3.服務器模式,允許使用TCP套接字的并發鏈接?
java -cp ../lib/hsqldb.jar org.hsqldb.Server ?database zzq?

4.web服務器模式,db以web服務器的形式啟動,允許jdbc驅動通過http執行sql;也可以以標準的servlet運行,運用于需要穿透防火墻的情況?
Java org.hsqldb.WebServer ?database zzq?



回到上面的問題,hsql的腳步可以在?database.script?里面閱讀?
CREATE MEMORY TABLE CUSTOMER(ID INTEGER NOT NULL PRIMARY KEY,FIRSTNAME VARCHAR,LASTNAME VARCHAR,STREET VARCHAR,CITY VARCHAR)?

CREATE SEQUENCE S_PROCESS_UNIFY_SENDER AS INTEGER START WITH 0?

CREATE SCHEMA PUBLIC AUTHORIZATION DBA?

CREATE INDEX INDEX_PROCESS_PI ON PROCESS_INSTANCE(TEMPLATENAME,DRAFTERNAME,STATUS)?

GRANT DBA TO SA?

INSERT INTO PROCESS_TEMPLATE VALUES('ContractSupport',''.....)

?

?

?

具體例子:

?

1.Server模式

首先要啟動server?端:

例如,在命令行窗口執行:

1.??????E:/1008/study/hsqldb/hsqldb_1_8_0_9/hsqldb/lib>java?-cp?hsqldb.jar?org.hsqldb.Se ??

2.??????rver?-database.0?file:c:/hsqldb/xxx?-dbname.0?x?-database.1?c:/hsqldb/test/mydat ??

3.??????abase2?-dbname.1?db2??

?

創建了2個數據庫,如:database.0 database.1?最多只能創建10個

dbname.0 x ,dbname.1 db2這里的x和db2都是給客戶端鏈接時使用的

database.0 file:c:/hsqldb/xxx,database.1 c:/hsqldb/test/mydatabase2?這里的xxx和mydatabase2hsqldb文件的文件名,客戶端鏈接時不能使用這個名字

然后啟動工具窗口可以對建立的數據庫進行操作。比如:

java?代碼

1.??????E:/1008/study/hsqldb/hsqldb_1_8_0_9/hsqldb/lib>java?-cp?hsqldb.jar?org.hsqldb.util.DatabaseManager??

?

?這時會彈出一個工具窗口,可以對其進行設置

Recent:選擇你最近的登錄方案,[可選]?
Setting Name:本次登錄方案名稱,如果本次登錄成功,那么等你下次登錄的時候在Recent下拉列表中將看到你的成功登錄方案[可選]?
Type:登錄模式,其中包括In-Memory模式、Standalone(In-process)模式、Server模式、WebServer模式... ...[必選]?
Driver:連接數據庫的驅動程序[必選]?
URL:連接數據庫的URL[必選]?
User:用戶名[必選]?
Password:密碼[?除非密碼為空]?,默認密碼是為空的,可以登錄后對密碼進行修改。只需要set password "123456",修改的只是當前鏈接的數據庫,對其它數據庫沒有影響,hsqldb可以看著是一個庫一個密碼

2.?嵌入式In-Process打開

In-Process方式不用啟動Server,直接設定JDBC URL即可,非常方便。但有一個缺點是只能在Java進程內共享信息,如果另外打開一個管理器,是沒辦法看到In-Process時的狀態

1.??????jdbc:hsqldb:file:C:/hsqldb/testdb??

?

其中路徑是script文件不帶后綴名的全路徑,可以絕對路徑,也可以是打開應用的相對路徑。

另外有一種讀取jar/classpath中的script文件的In-Process方式,方便發布war時不知道具體路徑的情況。不過這種方式是只讀不存盤的,利用來單元測試也不錯。下面的設置將讀取classpath根目錄下的test.script

1.??????jdbc:hsqldb:res:/hsqldb/testdb??

?

3.Memory方式打開
與In-Process方式最大區別是不能讀取Script文件進行初始化

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

?

注意事項:當一個服務器實例啟動或者建立一個in-process數據庫連接的時候,如果指定的路徑沒有數據庫存在,那么就會創建一個新的空的數據庫。這個特點的副作用就是讓那些新用戶產生疑惑。在指定連接已存在的數據庫路徑的時候,如果出現了什么錯誤的話,就會建立一個指向新數據庫的連接。為了解決這個問題,你可以指定一個連接屬性ifexists=true只允許和已存在的數據庫建立連接而避免創建新的數據庫,如果數據庫不存在的話,getConnection()方法將會拋出異常。

hibernate中,使用hsql中,如果設置主鍵類型用Idenetity,那么javafieldInteger類型,不能用Long

當你啟動數據庫執行創建表,增加數據的時候就會生成對應的sql語句。刪除操作不會記錄在script文件中。如果沒有以正確的方式退出hsqldb那么會增加*.lck和*.log文件,來記錄你的操作,直到你正確保存數據并且退出數據庫,這兩個文件才會消失。?
正確的退出數據庫是執行shutdown命令

比如:

1.??????public?class?Test?{ ??

2.????????

3.??????????public?static?void?main(String[]?args){ ??

4.??????????????try{???? ??

5.??????????????????Class.forName("org.hsqldb.jdbcDriver");?????????? ??

6.??????????????????Connection?conn?=?DriverManager.getConnection("jdbc:hsqldb:file:C:/hsqldb/testdb4/mydb4","sa","");???? ??

7.??????????????????Statement??st?=?conn.createStatement();?//?statement?objects?can?be?reused?with???????

8.??????????????????ResultSet??rs?=?st.executeQuery("select?*?from?users");?//?run?the?query???????

9.??????????????????while(rs.next()){??? ??

10.??????????????????String?s1=rs.getString("name");???? ??

11.??????????????????System.out.println(s1); ??

12.??????????????} ??

13.??????????????st.close();???? ??

14.??????????????st?=?conn.createStatement();???? ??

15.??????????????st.execute("SHUTDOWN");???? ??

16.??????????????conn.close();?//?if?there?are?no?other?open?connection???????

17.??????????????}catch(Exception?e){???? ??

18.??????????????????e=null;???? ??

19.??????????????????e.printStackTrace(); ??

20.??????????????}??? ??

21.????

22.??????} ??

23.??}?


總結

以上是生活随笔為你收集整理的HsqlDB使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。