gpt4 book ai didi

Java 准备语句 nullPointerException

转载 作者:行者123 更新时间:2023-12-01 12:55:11 25 4
gpt4 key购买 nike

我有两个类,在第一个类中我声明与 derby 数据库的连接

       static final String DATABASE_URL = "jdbc:derby://localhost:1527/A3";
Connection conn = null;
public ConnectionToSql() throws ClassNotFoundException {
try {
conn = DriverManager.getConnection(
DATABASE_URL, "root", "1234" );
} catch (SQLException e) {
}

在我的第二堂课中,我使用了准备好的语句

       public String validateUser(String username, String password) {

try {
PreparedStatement ps = (PreparedStatement) conn.prepareStatement("SELECT * FROM users where username = ? and password = ?");

ps.setObject(1, username);
ps.setObject(2, password);

ResultSet rs = ps.executeQuery();

我得到:线程“Thread-0”中的异常 java.lang.NullPointerException 在 Server.SqlRepository.validateUser(SqlRepository.java:28)

第 28 行是包含准备好的语句的行。抱歉,格式化了。

最佳答案

如果您的连接正在另一个类中实例化,您如何将对它的引用移至该类以创建准备好的语句?另外,如果您正确地将引用移动到第二个类,那么如何确定您的 DriverManager.getConnection() 返回有效的连接或没有抛出异常?

显然,conn 要么未实例化,要么引用 null。

try {       
conn = DriverManager.getConnection(
DATABASE_URL, "root", "1234" );
} catch (SQLException e) {
// You are doing nothing if the statement in your try block throws an exception.
}

在上面的代码中,您正在执行所谓的吞噬异常,这意味着如果异常发生,则不会采取任何措施。 至少,您可以将 e.printStackTrace(); 添加到 catch block 中,这样您就可以在抛出 Exception 时在控制台中看到.

如果 getConnection() 在当前代码中抛出 Exception,那么当您调用 conn.prepareStatement() 时,conn 将为 null,因此会出现 NullPointerException。我希望这会有所帮助。

供引用;

关于Java 准备语句 nullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23969255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com