我想要做的是從SQL語句中獲取ResultSet,然後從中獲取某些值。我似乎遇到的麻煩是準備在這條線上發生的準備好的聲明。SQLite的Connection.preparedStatement中的NullPointerException JDBC
String sql = "SELECT " + dataState + " FROM " + table + whereState + ";";
java.sql.PreparedStatement prep = conn.prepareStatement(sql); // Error here
我已經檢查過變量conn不是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)
在org.utilities.DataStore.load(DataManager.java:97)
at org.utilities.Test.main(Test.j ava:21)
sql語句的打印顯示它給出了這個。
SELECT testString, testBool, testObj FROM testTable WHERE testInt=?;
您可以確定給定字符串中的值。
我想不通的是什麼,我做錯了造成這一點,如果你想了解什麼,我使用SQLite系統,你可以在這裏找到主頁:http://www.zentus.com/sqlitejdbc/
謝謝提前在這方面提供任何幫助。我完全被難住了。
注:爲了節省資源,我緩存了我的Connection,並在稍後重新使用它們。當我嘗試重新獲得連接時,它可以很好地工作。有沒有一種方法可以緩存它們,或者我是否需要在每次使用它時加載它們?
無法想象你的問題是你要問什麼,有什麼。你的第一個SQL語句是完全錯誤的。你需要發佈一些相關的代碼。 – Lion 2012-04-18 02:48:33
爲什麼你不使用你的SQL語句就像這樣'「SELECT dataState FROM table where State =?」; prep.setString(1,「Some State」);'? – Lion 2012-04-18 02:55:15
變量'conn'不爲空,查看NPE正在發生的源代碼,因爲'conn.db();'返回null。你的連接配置是否正確?在連接創建期間檢查錯誤日誌中的異常。 – 2012-04-18 03:42:19