2017-05-04 110 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