【问题标题】:What to do to make the HSQL driver working?如何使 HSQL 驱动程序正常工作?
【发布时间】:2011-11-19 01:50:15
【问题描述】:

我目前正在学习 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)

【问题讨论】:

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

标签: java database connection driver hsqldb


【解决方案1】:

问:我可能缺少什么?

A:听起来您缺少 HSQL 驱动程序,甚至可能缺少 HSQL 本身 :)

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

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

这里是 a good link,用于将第 3 方 .jar 文件(如 HDBC)添加到 Eclipse 项目。

here's a link on different HSQL options 用于您的 JDBC 连接。

您使用的是 Eclipse、Netbeans 还是“其他”?

【讨论】:

    【解决方案2】:

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

    另请参阅documentation

    【讨论】:

      【解决方案3】:

      您的第二次尝试是尝试连接到网络服务器。所以,你必须先启动网络服务器。

      你可以按照我的回答in this post来玩HSQL服务器。

      【讨论】:

      • “ClassNotFoundException”(即堆栈跟踪)是因为他没有配置.jar(Netbeans找不到“org.hsqldb.jdbcDriver”)
      • 嘿,我想他已经知道了。所以我只需要回答为什么第二次尝试失败。我一步一步的回答将帮助任何人,即使他不是开发人员。
      【解决方案4】:

      应该使用主机PC的IP地址而不是localhost/127.0.0.1

      【讨论】:

        【解决方案5】:

        对我来说,问题出在类路径中。我正在使用 eclipse tomcat 和 hslqdb.jar。

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

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

        【讨论】:

          【解决方案6】:

          仅添加您提及的内容并没有帮助。

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

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

          【讨论】:

          • 尝试以这种方式改变你的答案,它能够独立存在。现在看起来它可以被视为对@Javier-del-Castillo 答案的评论,被删除。
          【解决方案7】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-05-03
            • 2019-02-08
            • 1970-01-01
            • 2023-03-19
            • 2021-04-14
            • 2014-05-23
            • 2014-01-25
            • 1970-01-01
            相关资源
            最近更新 更多