簡體   English   中英

SQLite JDBC的Connection.preparedStatement中的NullPointerException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM