[英]NullPointerException from Connection.preparedStatement for SQLite JDBC
我想要做的是從SQL語句中獲取ResultSet,然后我可以從中獲取某些值。 我似乎遇到麻煩的是准備在這一行發生的准備好的陳述。
String sql = "SELECT " + dataState + " FROM " + table + whereState + ";";
java.sql.PreparedStatement prep = conn.prepareStatement(sql); // Error here
我已經檢查過變量conn不為null。 語句中的所有值都不為null,堆棧跟蹤顯示了這一點。
顯示java.lang.NullPointerException
在org.sqlite.PrepStmt。(PrepStmt.java:37)
在org.sqlite.Conn.prepareStatement(Conn.java:231)
在org.sqlite.Conn.prepareStatement(Conn.java:224)
在org.sqlite.Conn.prepareStatement(Conn.java:213)
在org.utilities.storagemethods.SQLiteMethod.load(SQLiteMethod.java:223)
at org.utilities.DataManager.load(DataManager.java:97)
在org.utilities.Test.main(Test.java:21)
sql語句的打印顯示它給出了這個。
SELECT testString, testBool, testObj FROM testTable WHERE testInt=?;
您可以確定給定字符串中的值。
我無法弄清楚我做錯了什么導致這個,如果你對我正在使用的sqlite系統感到好奇,你可以在這里找到主頁: http : //www.zentus.com/ sqlitejdbc /
在此先感謝任何幫助。 我完全難過了。
注意:為了節省資源,我正在緩存我的Connection,並在以后重新使用它們。 當我嘗試重新獲得連接時,它完美地工作。 有沒有辦法可以緩存它們,還是每次我想要使用它時都需要加載它們?
我收到了這個錯誤,這是因為我關閉了連接。 連接不是null,它剛剛關閉。 ARRRGGG! 就像OP暗示的那樣,我開始使用Zentus的示例代碼(Xerial現在,因為Zentus似乎已經關閉)。 示例代碼有一個finally塊,用於關閉連接。 一旦我拿出了finally塊,我的錯誤就消失了。 只需記住在退出程序之前關閉連接。
要查看是否存在相同問題,請在產生錯誤的行之前嘗試添加
System.out.println("isClosed = " + conn.isClosed());
如果沒有錯,我認為這是因為';' 在你的SQL語句中。 請刪除並重試?
問候,守則背后
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.