Драйвер HSQL не работает? - PullRequest
       32

Драйвер HSQL не работает?

2 голосов
/ 17 сентября 2011

В настоящее время я изучаю некоторые трюки с базой данных на Java и нашел эту прекрасную книгу, которую читаю.В какой-то момент ite рекомендует мне попробовать ручное соединение базы данных со следующим классом:

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)

Ответы [ 7 ]

6 голосов
/ 17 сентября 2011

Драйвер hsql отсутствует в вашем пути к классам.Вам нужно как-то включить этот файл jar драйвера в classpath .например, вы бы запустили свою программу таким образом java -cp .;hsqldb.jar DemoSelect.Использование: в качестве разделителя вместо;если вы используете * nix.

См. также документацию здесь

1 голос
/ 17 сентября 2011

Вторая ваша попытка пытается подключиться к сетевому серверу. Поэтому сначала нужно запустить сетевой сервер.

Вы можете следить за моим ответом в этом посте, чтобы поиграть с hsql сервером.

Концепция базы данных в памяти и как посмотреть, заполняются ли мои данные в базе данных HSQL?

1 голос
/ 17 сентября 2011

В: Чего мне не хватать?

A: Похоже, вам не хватает драйвера HSQL или, возможно, даже самого HSQL:)

В: Вы уверены, что HSQL успешно установлен в вашей системе? Вот хорошая ссылка:

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

В: Включаете ли вы драйвер JDBC HSQL в свой путь к классам? Или, если вы используете 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 или "что-то еще"?

0 голосов
/ 26 августа 2018

Это также может произойти, если вы случайно закомментировали hsql.jdbc.driver=org.hsqldb.jdbcDriver из ваших файлов свойств. :-D

0 голосов
/ 14 октября 2013

Просто добавление упоминания не помогло.

"Выбрать" запустить конфигурации ... "-> tomcat server -> classpath -> записи пользователя -> добавить jar"

Это былохорошее начало, но вы ДОЛЖНЫ ВКЛЮЧИТЬ sqltool.jar.

0 голосов
/ 24 апреля 2012

Для меня проблема была в classpath.Я работаю с eclipse tomcat и hslqdb.jar.

Выберите «запустить конфигурации ...» -> tomcat server -> classpath -> записи пользователя -> добавить jar

Может быть, вызабыл добавить hsqldb.jar в classpath для сервера.

0 голосов
/ 16 октября 2011

IP ПК (где размещено приложение) следует использовать вместо localhost / 127.0.0.1

...