訪問HyperSQL資料庫的方法

honeymoose發表於2011-01-11

通常來說 JDBC 可以訪問所有的資料庫。

JDBC 通常只用於連線資料庫,當 JDBC 完成資料庫連線後,將會使用 java.sql.Connection
物件提供的一系列方法來返回訪問的資料。

訪問 HyperSQL 使用的是 JDBC, 但是針對資料庫特性的不同而採用不同的連線字串。

例如:如果資料庫為 file:database
型別,資料被命名為
“testdb”。同時這個資料庫檔案與你釋出的應用程式在相同的目錄下,你可以使用下面的程式碼來建立一個資料庫連線:

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

資料庫檔案的路徑格式可以在 Windows 和 Linux 下 用反斜槓來指定。

因此在相同磁碟路徑下相對路徑和絕對路徑便可以用上面的方法進行識別。

例如,如果你的資料庫路徑在 Linux 下為 /opt/db/testdb
,同時你在 Windows
的 C 盤下建立了相同的目錄結構,你可以在 Windows 和 Linux 下使用相同的連線字串如下:

Connection c = DriverManager.getConnection("jdbc:hsqldb:file:/opt/db/testdb", "SA", "");

當使用相對路徑的時候,這個路徑指向為相對但卻 JVM 執行時的路徑。請參考 JDBCConnection
的 API 文件來獲得更多的內容。

路徑名與資料庫檔名在資料庫和連線被第一次被建立的時候按照大小寫敏感的方式命名的。

但是,如果在隨後使用其他連線來連線一個已經開啟的資料庫的時候,如果你使用了全部大寫的連線字串,那麼你也會連到已經開啟的這個資料庫。換句話說,第二次的連線和第一次的連線是等效的。

這種考慮方式是很有必要的,因為 Windows 在路徑上是大小寫不敏感的。

一個 mem: 資料庫,會用關鍵字 mem: 來進行定義的。對於 mem: 資料庫而言,其路徑僅僅是其名字。一些 mem:
資料庫可以與其名字同時顯式存在。

在下面的例子中,資料庫被稱為 “mymemdb”:

Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:mymemdb", "SA", "");

res: 資料庫採用 res: 關鍵字。這個方式的資料庫為一個 Java 的資原始檔,資料庫的路徑為 Java 路徑 (與 class
的路徑一樣)。在下面的例子中, “resdb” 是資料庫檔案的在 class 目錄 “org/ my/path” 下的根節點。一個 Java
資源儲存的是一個壓縮格式,當其在呼叫的時候,將會在記憶體中解壓。

因為這個原因 res: 資料庫不能儲存大量資料同時永遠是隻讀的。

Connection c = DriverManager.getConnection("jdbc:hsqldb:res:org.my.path.resdb", "SA", "");

在第一次進行資料庫訪問的時候,將會建立一個資料庫,一些基本資料結構將會被初始化,一些輔助執行緒也會被啟動。

當這些完成以後,一些 Java 應用程式將會用 JDBC 進行連線的呼叫。

當 SQL 命令 “SHUTDOWN” 被執行,全域性資料結構和輔助執行緒將會被銷燬。

注:
只有一個 Java 程式可以訪問資料庫 file: 。如果
file: 資料庫為只讀型別的資料庫,或者建立的是一個 res: 資料庫,有可能從 Java 程式中建立多個連線。


相關文章