posts - 2, comments - 27, trackbacks - 0, articles - 60
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          HSQLDB數據庫使用介紹

          Posted on 2017-04-23 16:41 ZhouFeng 閱讀(5021) 評論(0)  編輯  收藏 所屬分類: 原創DataBase
          用過HSQLDB一段時間,其作為一個小型數據庫,很是小巧,jar包也就1M多,麻省雖小,五臟俱全。對于一此網站系統或是小型的應用系統,應該足夠滿足要求了,主要是綠色環保,不需要進行安裝,這點我很喜歡,特別是直接打包到web應用里,可以直接使用,用不著更換運行環境后,重新配置數據庫連接。下面就介紹一下hsqldb的一些簡單的使用

          下載HSQLDB
          首先下載hsqldb,其官方網站為hsqldb.org,目前最新版本是2.4.0,最早用過1.9版本的,就覺得甚是喜歡,主頁界面上有下載的鏈接,就一個壓縮文件包,不需要區分操作系統。下載后解壓即可

          目錄結構介紹
          bin:存放運行的批處理,可以參照著放入自己的批處理用于啟動或管理數據庫
          data:用于存放數據文件的地方,新解壓時為空,后面自己用的時候,可能放在里面,也可以放在其他地方
          doc:文檔,與數據庫操作的所有文檔都在里面,很詳細,有什么問題可以在里面找找
          lib:jar文件,HSQLDB核心的jar包
          sample:一些配置的模板

          數據庫啟動
          HSQLDB運行分為三種模式,分別為內存模式,進程模式,和服務器模式。
          在內存模式下,所有的數據都將在內存中完成,如果程序退出,則相應的數據也將同時被銷毀。連接JDBC的實例為:jdbc:hsqldb:mem:dbname
          在進程模式下,是直接以文件方式進行操作,所有文件均寫入文件,關閉數據庫后數據可以保留,這種模式下不能接受其他程序訪問
          服務器模式,常用,又分為三種,即Servet,WebServer,Servlet,詳見官方文檔,服務器模式單獨啟動一個JVM用于提供數據庫服務,并開放連接端口,其他程序可以通過jdbc或客戶端連接,這也是在開發和調試中常用的一種方式,在上線運行后,可采用進程模式
          以Server方式啟動服務器
          修改bin/runServer.bat,另存為myBookServer
          cd ..\data
          @java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:book --dbname.0 bookdb
          即在data目錄下創建數據文件,文件名為book,啟動服務的數據庫名為bookdb,如果需要修改監聽端口,可以使用--poot 9002,如果不修改端口,可以不用添加這個參數,默認端口為9001,啟動后的顯示如下
          D:\hsqldb-2.4.0\hsqldb\bin>myBookServer.bat

          D:\hsqldb-2.4.0\hsqldb\bin>cd ..\data
          [Server@4517d9a3]: Startup sequence initiated from main() method
          [Server@4517d9a3]: Could not load properties from file
          [Server@4517d9a3]: Using cli/default properties only
          [Server@4517d9a3]: Initiating startup sequence
          [Server@4517d9a3]: Server socket opened successfully in 6 ms.
          [Server@4517d9a3]: Database [index=0, id=0, db=file:book, alias=bookdb] opened successfully in 354 ms.
          [Server@4517d9a3]: Startup sequence completed in 362 ms.
          [Server@4517d9a3]: 2017-04-23 15:22:33.599 HSQLDB server 2.4.0 is online on port 9001
          [Server@4517d9a3]: To close normally, connect and execute SHUTDOWN SQL
          [Server@4517d9a3]: From command line, use [Ctrl]+[C] to abort abruptly
          看到這個提示,說明數據庫已經啟動好了,并開啟了監聽端口9001,現在可以通過客戶端程序連接了
          在bin目錄下,有一個runManager.bat和一個runManagerSwing.bat,這兩個批處理都可以打開自帶的客戶端程序,只是界面風格有所不同,runManager要簡潔些,下面介紹一下runManagerSwing的使用,雙擊打開后,需要填寫連接信息,當然也可以在命令行里通過參數的方式進行連接,在彈出對話框里輸入連接信息

          mybook是為當前配置取的名字,URL里添加上bookdb,如果不是9001端口的話,還需要添加端口,如//localhost:9001/bookdb,登錄后,就可以進入到管理界面了

          在這里操作HSQLDB,比如創建表,修改數據之類的,如果需要修改密碼之類的操作,文檔里有詳解
          創建表,插入數據,可以上圖界面中運行如下命令
          CREATE TABLE TB_BOOKS(BOOKID INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY,BOOKNAME VARCHAR(30),AUTHOR VARCHAR(30));
          創建一個book表,分別為bookid,bookname,author

          JDBC訪問
          接下來用JAVA寫入數據并測試
          package com.zhouf.hsql;

          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.ResultSet;
          import java.sql.SQLException;
          import java.sql.Statement;

          public class HsqlTest {

              public static void main(String[] args) throws SQLException {
                  //initData();
                  Connection conn = getConnection();
                  Statement stmt = conn.createStatement();
                  ResultSet rs = stmt.executeQuery("select * from tb_books");
                  while(rs.next()){
                      System.out.println(rs.getString("bookname") + "=>" + rs.getString("author"));
                  }
                  rs.close();
                  stmt.close();
                  conn.close();

              }
              
              public static Connection getConnection(){
                  Connection conn = null;
                  try {
                      Class.forName("org.hsqldb.jdbcDriver");
                      conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/bookdb", "SA", "");
                  } catch (ClassNotFoundException e) {
                      e.printStackTrace();
                  } catch (SQLException e) {
                      e.printStackTrace();
                  }
                  return conn;
              }
              
              public static void initData() throws SQLException{
                  
                  Connection conn = getConnection();
                  Statement stmt = conn.createStatement();
                  for (int i = 10; i < 30; i++) {
                      String sql = "insert into tb_books(bookname,author) values('BookName"+i+"','Author"+i+"')";
                      System.out.println(sql);
                      stmt.addBatch(sql);
                  }
                  
                  stmt.executeBatch();
                  stmt.close();
                  conn.close();
              }

          }
          先調用initData()初始化數據,就可以在管理界面中看到數據了,再運行java可以讀取數據,JDBC連接沒有問題,記得一定要在工程里引用lib/hsqldb.jar庫
          此時在data目錄下有很多book開頭的文件,只是后綴有所不同,有臨時文件,日志文件,屬性文件以及腳本文件等,如果運行了shutdown命令,則其他文件會自動清理,僅保留properties和script文件,如果要帶走數據庫,把這兩個文件帶走就好了。
          如果不希望每次打開管理界面都彈出對話框要求輸入內容,可以在命令行里添加參數,拷貝一份bin/runManagerSwing.bat并修改為如下內容
          cd ..\data
          @java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManagerSwing --url jdbc:hsqldb:hsql://localhost/bookdb --user SA
          另存為myBookManager.bat,下次直接運行這個批處理就可能直接連接到數據庫服務器,不用再彈出連接對話框了,前提是服務器正在運行中,如果運行了shutdown關閉了服務器,則需要重新啟動服務器進行連接。
          至此,基本的hsqldb的使用就完成了,文檔里還有其它更多的配置和連接方式,詳細情況請參閱doc目錄下的文檔。
          如果需要把hsqldb嵌入到webapp中運行,不用單獨啟動服務器,請關注后續文檔,稍后整理好再發布。自己碼了一下午才整理好這一篇,看來得提高效率了,如果這篇文檔能對大家所有幫助,那就太好了。
          主站蜘蛛池模板: 三穗县| 咸阳市| 上蔡县| 阳春市| 新乐市| 泽普县| 新平| 河曲县| 静乐县| 名山县| 郓城县| 安国市| 凌云县| 威海市| 遵化市| 山阳县| 海林市| 理塘县| 安徽省| 双桥区| 溧阳市| 新兴县| 通化市| 莱州市| 洛扎县| 博乐市| 北票市| 封开县| 武威市| 阿瓦提县| 来安县| 衡阳县| 渭源县| 温宿县| 手机| 泾阳县| 永德县| 兴文县| 信丰县| 长岛县| 涿鹿县|