2017-05-04 114 views
0

我掌握了創建HSQLDB服務器編程時使用org.hsqldb.server.Server類是有用的。如何使用org.hsqldb.jdbc.JDBCConnection類HSQLDB API

我總是使用java SDK類(java.sql.Connection)連接到服務器,我覺得它足以連接服務器是基於內存還是基於文件。

爲什麼我們需要org.hsqldb.jdbc.JDBCConnection類HSQLDB API的?

+0

感謝AmitK編輯問題! – Bll

+0

感謝Mrak編輯我的問題! – Bll

回答

0

沒有'class'java.sql.Connection:它是一個接口。 JDBC是一個由接口(和一些支持類)組成的API。這些接口需要由每個JDBC驅動程序實現,以便能夠執行任何操作。

當您使用HSQLDB,你使用它的實施java.sql.Connection稱爲org.hsqldb.jdbc.JDBCConnection;這包含了HSQLDB如何工作的細節(JDBC本身並不知道的東西)。但是通常你只需要通過JDBC中定義的接口訪問它;這對於便攜性來說甚至更好。

因此,簡而言之,如果它不是org.hsqldb.jdbc.JDBCConnection,您甚至不能連接到HSQLDB。

+0

**實現與界面... **非常感謝! – Bll

0

我還沒有HSQLDB很多,但API文檔的工作似乎是你的問題的最佳來源。

Class JDBCConnection文檔說 -

JDBC 4.0注:

與JDBC 4.0(JDK 1.6),在DriverManager的方法 的getConnection和getDrivers已得到增強,支持Java 標準版服務開始提供者機制。當在支持JDBC 4.0在Java運行時 建,含 驅動程序實現HSQLDB分配罐還包括文件 META-INF /服務/ java.sql.Driver中。該文件包含了HSQLDB 實現java.sql.Driver中的完全 限定類名(「org.hsqldb.jdbc.JDBCDriver」)。

因此,在JDBC 4.0或更高版本下,應用程序不再需要使用Class.forName()顯式地加載HSQLDB JDBC驅動程序 。在 當然,使用 Class.forName()加載JDBC驅動程序的現有程序將繼續工作而不做任何修改。

所以我想你可以用標準化的代碼繼續。

該類可能有一些特定於HSQLDB的附加方法。

此外,你將不得不類型轉換,如果計劃使用這些特定的方法,

JDBCConnection connection = 
      (JDBCConnection) DriverManager.getConnection(url, connProperties); 

關於你提到的其他問題,模式是 - <url>[;key=value]*即你放一個分號後的URL,然後指定鍵 - 價值觀格式爲key=value。每個key=value需要用分號分隔。

例如jdbc:hsqldb:hsql://localhost/cities;user=bill;password=password 即您在追加鍵值對之前添加分號並且不添加最後一個鍵值對的分號。

+0

謝謝薩比爾。它有很多幫助。還有一個問題,如果你不介意。在API的同一頁面上,末尾有** HSQLDB特定信息**。它說:從1.7.2開始,連接屬性()可以附加到數據庫連接,使用以下形式:' [; key = value] *'您能解釋一下還是顯示一個簡單的例子?我很難理解這一點。 – Bll

+0

@Bll你真的應該問這是一個新問題。 –

+0

感謝Mark,我將爲此API部分創建一個新問題。 – Bll