Java 如何使HSQL驱动程序工作?

Java 如何使HSQL驱动程序工作?,java,database,connection,driver,hsqldb,Java,Database,Connection,Driver,Hsqldb,我目前正在学习Java中的一些数据库技巧,我发现了我正在阅读的这本好书。 在某种程度上,它鼓励我尝试与以下类进行手动数据库连接: import java.sql.DriverManager; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; public class DemoSelect { public static void main(final St

我目前正在学习Java中的一些数据库技巧,我发现了我正在阅读的这本好书。 在某种程度上,它鼓励我尝试与以下类进行手动数据库连接:

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DemoSelect {

    public static void main(final String[] arguments) {

        // Connection parameters
        String usr = "sa";
        String pwd = "";
        String driver = "org.hsqldb.jdbcDriver";
        String url = "jdbc:hsqldb:hsql://localhost/xdb";

        Connection con = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;

        try {
            // Starting up the driver
            Class.forName(driver);

            // Connecting
            con = DriverManager.getConnection(url, usr, pwd);

            // Writing a query
            String sql = "SELECT empno, ename, hiredate, deptno FROM emp";

            // Setting up the SQL statement
            pstm = con.prepareStatement(sql);

            // Execute the SQL query
            rs = pstm.executeQuery();

            // Iterating the results
            while (rs.next()) {

                // Simple method to show the data
                System.out.print(rs.getInt("empno") + ", ");
                System.out.print(rs.getString("ename") +  ", ");
                System.out.print(rs.getDate("hiredate") + ", ");
                System.out.println(rs.getInt("deptno"));
            }
        } catch(final Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);

        } finally {
            try {

                // Closing all the opened resources
                if (rs != null) rs.close();
                if (pstm != null) pstm.close();
                if (con != null) con.close();
            } catch(final Exception e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
    }
}
但当我尝试运行它时,它会生成一个错误,描述如下:

java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at cap3.jdbc.DemoSelect.main(DemoSelect.java:25)
Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException:      org.hsqldb.jdbcDriver
        at cap3.jdbc.DemoSelect.main(DemoSelect.java:53)
    Caused by: java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at cap3.jdbc.DemoSelect.main(DemoSelect.java:25)
 Java Result: 1
 BUILD SUCCESSFUL(total time: 0 seconds)`
我会错过什么

我正在使用NetBeans并下载了HSQL驱动程序。我设法将.jar文件导入到库中,得到了以下错误代码:

java.sql.SQLTransientConnectionException: java.net.ConnectException: Connection refused: connect
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at cap3.jdbc.DemoSelect.main(DemoSelect.java:28)
Caused by: org.hsqldb.HsqlException: java.net.ConnectException: Connection refused: connect
at org.hsqldb.ClientConnection.openConnection(Unknown Source)
at org.hsqldb.ClientConnection.initConnection(Unknown Source)
at org.hsqldb.ClientConnection.<init>(Unknown Source)
... 6 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:337)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:198)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:208)
at org.hsqldb.server.HsqlSocketFactory.createSocket(Unknown Source)
... 9 more
Exception in thread "main" java.lang.RuntimeException: java.sql.SQLTransientConnectionException: java.net.ConnectException: Connection refused: connect
at cap3.jdbc.DemoSelect.main(DemoSelect.java:53)
Caused by: java.sql.SQLTransientConnectionException: java.net.ConnectException: Connection refused: connect
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at cap3.jdbc.DemoSelect.main(DemoSelect.java:28)
Caused by: org.hsqldb.HsqlException: java.net.ConnectException: Connection refused: connect
at org.hsqldb.ClientConnection.openConnection(Unknown Source)
at org.hsqldb.ClientConnection.initConnection(Unknown Source)
at org.hsqldb.ClientConnection.<init>(Unknown Source)
... 6 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:337)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:198)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:208)
at org.hsqldb.server.HsqlSocketFactory.createSocket(Unknown Source)
... 9 more
Java Result: 1
BUILD SUCCESSFUL(total time: 1 second)
java.sql.SQLTransientConnectionException:java.net.ConnectException:拒绝连接:连接
位于org.hsqldb.jdbc.Util.sqlException(未知源)
位于org.hsqldb.jdbc.Util.sqlException(未知源)
位于org.hsqldb.jdbc.JDBCConnection。(来源未知)
位于org.hsqldb.jdbc.JDBCDriver.getConnection(未知源)
位于org.hsqldb.jdbc.JDBCDriver.connect(未知源)
位于java.sql.DriverManager.getConnection(DriverManager.java:579)
位于java.sql.DriverManager.getConnection(DriverManager.java:221)
位于cap3.jdbc.DemoSelect.main(DemoSelect.java:28)
原因:org.hsqldb.HsqlException:java.net.ConnectException:连接被拒绝:connect
位于org.hsqldb.ClientConnection.openConnection(未知源)
位于org.hsqldb.ClientConnection.initConnection(未知源)
位于org.hsqldb.ClientConnection。(未知来源)
... 还有6个
原因:java.net.ConnectException:连接被拒绝:连接
位于java.net.DualStackPlainSocketImpl.connect0(本机方法)
位于java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:337)
位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:198)
位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
位于java.net.socksocketimpl.connect(socksocketimpl.java:391)
位于java.net.Socket.connect(Socket.java:579)
位于java.net.Socket.connect(Socket.java:528)
位于java.net.Socket。(Socket.java:425)
位于java.net.Socket(Socket.java:208)
位于org.hsqldb.server.HsqlSocketFactory.createSocket(未知源)
... 9更多
线程“main”java.lang.RuntimeException:java.sql.SQLTransientConnectionException:java.net.ConnectException:连接被拒绝:连接
位于cap3.jdbc.DemoSelect.main(DemoSelect.java:53)
原因:java.sql.SQLTransientConnectionException:java.net.ConnectException:连接被拒绝:连接
位于org.hsqldb.jdbc.Util.sqlException(未知源)
位于org.hsqldb.jdbc.Util.sqlException(未知源)
位于org.hsqldb.jdbc.JDBCConnection。(来源未知)
位于org.hsqldb.jdbc.JDBCDriver.getConnection(未知源)
位于org.hsqldb.jdbc.JDBCDriver.connect(未知源)
位于java.sql.DriverManager.getConnection(DriverManager.java:579)
位于java.sql.DriverManager.getConnection(DriverManager.java:221)
位于cap3.jdbc.DemoSelect.main(DemoSelect.java:28)
原因:org.hsqldb.HsqlException:java.net.ConnectException:连接被拒绝:connect
位于org.hsqldb.ClientConnection.openConnection(未知源)
位于org.hsqldb.ClientConnection.initConnection(未知源)
位于org.hsqldb.ClientConnection。(未知来源)
... 还有6个
原因:java.net.ConnectException:连接被拒绝:连接
位于java.net.DualStackPlainSocketImpl.connect0(本机方法)
位于java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:337)
位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:198)
位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
位于java.net.socksocketimpl.connect(socksocketimpl.java:391)
位于java.net.Socket.connect(Socket.java:579)
位于java.net.Socket.connect(Socket.java:528)
位于java.net.Socket。(Socket.java:425)
位于java.net.Socket(Socket.java:208)
位于org.hsqldb.server.HsqlSocketFactory.createSocket(未知源)
... 9更多
Java结果:1
生成成功(总时间:1秒)

Q:我会错过什么

答:听起来好像您缺少了HSQL驱动程序,甚至可能是HSQL本身:)

问:您确定HSQL已成功安装在您的系统上吗?看一看

问:您是否在类路径中包含HSQLJDBC驱动程序?或者,如果您使用的是IDE,“库”设置是否包括HSQLJDBC驱动程序

下面是向Eclipse项目添加第三方.jar文件(如HDBC)的示例

以及您的JDBC连接


您是在使用Eclipse、Netbeans还是“其他东西”?

HSQL驱动程序不在您的类路径中。您必须通过使用
java-cp运行程序,以某种方式将该驱动程序jar文件包含到。;hsqldb.jar演示选择
。使用“
”作为分隔符,而不是“
',如果您在*nix上


另请参见。

您的第二次尝试是尝试连接到网络服务器。因此,您必须首先启动网络服务器


您可以按照我的答案玩HSQL服务器。

应该使用主机的IP地址,而不是本地主机的IP地址。
/
127.0.0.1

对于我来说,问题在于类路径。我正在使用EclipseTomcat和hslqdb.jar

选择“运行配置…”->tomcat服务器->类路径->用户条目->添加jar


可能是您忘了将hsqldb.jar添加到服务器的类路径中。

只是添加您提到的内容没有帮助

选择“运行配置…”->tomcat服务器->类路径->用户条目->添加jar


这是一个很好的开始,但您还必须包括sqltool.jar。

如果您不小心从属性文件中注释掉了
hsql.jdbc.driver=org.hsqldb.jdbdriver
,也会发生这种情况:-D

请查看我昨天的回复,1)确保HSQL已安装并正在运行(我提供了链接),2)确保HSQL JDBC.jar文件位于您的路径/项目中。失踪者