2011-09-17 27 views
2

我目前正在学习Java中的一些DataBase技巧,并且我发现了我正在阅读的这本好书。 在某些时候,ITE鼓励我去尝试下面的类手动数据库连接:HSQL驱动不工作?

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

public class DemoSelect { 

    public static void main (String[] args){ 

     //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); 

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

      //Writting 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 (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 (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) 
+0

有问题吗? –

+0

请看我昨天的回复以及1)确保HSQL已安装并正在运行(我提供了链接),并且2)确保HSQL JDBC .jar文件在您的路径/项目中。丢失的.jar文件是堆栈跟踪的原因。 – paulsm4

回答

6

hsql驱动程序不在您的类路径中。您必须以某种方式在classpath中包含该驱动程序jar文件。例如你可以用这种方式运行你的程序java -cp .;hsqldb.jar DemoSelect。使用:作为分隔符而不是;如果你在* nix。

也文档here

1

问:我能怎么会丢失?

答:这听起来像你错过了HSQL驱动程序,或者甚至HSQL本身:)

问:你肯定HSQL成功安装到您的系统上?这里有一个很好的链接:

http://hsqldb.org/web/howto.html

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

这里有一个很好的链接添加第三方.jar文件(如HDBC)到Eclipse项目:

http://www.wikihow.com/Add-JARs-to-Project-Build-Paths-in-Eclipse-%28Java%29

而这里的不同HSQL选项的链接,你的JDBC连接:

http://hsqldb.org/doc/guide/ch04.html

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

1

看到你的第二次尝试时试图连接到网络服务器。所以你必须先启动网络服务器。

你可以按照我的回答在这篇文章中玩hsql服务器。

Concept of In Memory Database and how to see if my data is being populated in HSQL DB?

+0

“ClassNotFoundException”(即堆栈跟踪)是因为他没有配置.jar(Netbeans无法找到“org.hsqldb.jdbcDriver”) – paulsm4

+0

嘿,我想他已经知道了。所以我只需要回答为什么第二次尝试失败。而我一步一步的答案将帮助任何人,即使他不是开发人员。 –

0

知识产权PC(如果应用程序托管)应使用以代替localhost/127.0.0.1

0

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

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

可能是你忘了添加的hsqldb.jar类路径的服务器。

-1

只要添加你提到的东西没有帮助。

“选择‘运行配置...’ - > Tomcat服务器 - >类路径 - >用户条目 - >添加罐子”

这是一个良好的开端,但你必须还包括sqltool.jar。

+0

试着改变你的答案,它可以独立。现在看起来它可以被视为对@ Javier-del-Castillo的回答的评论,被删除。 – bummi

相关问题