![](/img/trans.png)
[英]Java - Derby - JDBC - NullPointerException PreparedStatement
[英]Java PreparedStatement nullPointerException
我有兩個類,在第一個類中,我聲明我與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) {
}
在第二堂課中,我使用了prepareStatement
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();
我得到:Server.SqlRepository.validateUser(SqlRepository.java:28)的線程“ Thread-0”中的異常java.lang.NullPointerException
第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.
}
在上面的代碼中,您正在執行吞咽 Exception
,這意味着,如果發生Exception
,則不會對其進行任何處理。 至少您可以添加e.printStackTrace();
插入catch塊中,以便您可以在控制台中看到引發Exception
。
如果getConnection()
在當前代碼中引發Exception
,則當您調用conn.prepareStatement()
, conn
將為null
因此為NullPointerException
。 我希望這有幫助。
以供參考;
最可能的原因:DriverManager.getConnection引發異常,然后將其淺化。 在這種情況下,conn將為null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.