【问题标题】:My Connection with HSQL Database over the Eclipse HSQL Database Manager does not work我通过 Eclipse HSQL 数据库管理器与 HSQL 数据库的连接不起作用
【发布时间】:2021-06-30 01:31:04
【问题描述】:

我想将我的 hsql 数据库与 eclipse hsql 数据库管理器连接到我的 eclipse 中,我认为代码非常正确,但它给了我这个错误:

线程“main”中的异常 java.lang.NullPointerException:无法调用“java.sql.Connection.createStatement()”,因为“this.con”为空 在 peraLinq.Main.selectAll(Main.java:36) 在 peraLinq.Main.main(Main.java:30)

我该如何解决?

package peraLinq;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {
    Connection con = null;
    public Main() {
        try {
            Class.forName("org.hasqldb.jdbcDriver");
        }
        catch(ClassNotFoundException e) {
            return;
        }
        
        con = null;
        
        try {
            con = DriverManager.getConnection("jdbc:hasqldb:file:C:\\Users\\usera\\Desktop\\peraLinq\\database\\saves; shutdown=true", "root", "root");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        Main m = new Main();
        m.selectAll();

    }
    
    public void selectAll() {
        try {   
        Statement stmt = con.createStatement();
        String sql = "SELECT * FROM Customers";
        
        
            ResultSet res = stmt.executeQuery(sql);
            while(res.next()) {
                String id = res.getString(1);
                String name = res.getString(2);
                String email = res.getString(3);
                System.out.println(id + " " + name + " " + email);
            }
            res.close();
            stmt.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

【问题讨论】:

    标签: java sql database eclipse hsqldb


    【解决方案1】:

    那个 JDB URL 看起来正确吗? jdbc:hasqldb

    应该是jdbc:hsqldb

    Class.forName("org.hasqldb.jdbcDriver"); 似乎很可能失败,因为 jdbc 驱动程序名称错误。如果失败,该方法将返回,使con 仍然等于null

    更正Class.forName语句中的jdbc驱动名称,再试一次。

    可能也值得将e.printStackTrace() 放入所有catch 块中——这样更容易找出问题所在。

    【讨论】:

    • 还能是什么?
    • 还有什么?更正 URL 中的拼写 getConnection("jdbc:hsqldb:file:C:\\Users\\u...
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2013-12-13
    • 2012-03-11
    • 2010-09-17
    • 1970-01-01
    相关资源
    最近更新 更多