2010-02-02 31 views
2

在sqlite數據庫中,我設置了一個字段類型的blob。 然後,我寫Java代碼:用java代碼插入圖片到數據庫(sqlite)。我該怎麼辦?

PreparedStatement preStmt = con.prepareStatement("INSERT INTO zz(pic) VALUES(?)"); 
preStmt.setBinaryStream(1, new FileInputStream(file), file.length()); 

我有一個例外:

java.lang.AbstractMethodError: org.sqlite.PrepStmt.setBinaryStream(ILjava/io/InputStream;J)V 

什麼建議嗎?

或者,如果我想使用保存二進制數字在sqlite中,我應該寫什麼代碼?

+0

重複http://stackoverflow.com/questions/1767968/java-exception-error-sqlite-preparedstatement-setblob的,仍然沒有得到解決,雖然 – medopal 2010-02-02 09:22:48

+0

我會盡力的Oracle Berkeley DB Java版 – Keating 2010-02-02 11:32:46

回答

0

AbstractMethodErrorAPI documentation告訴以下:

當應用程序試圖調用一個抽象方法拋出。通常,這個錯誤被編譯器捕獲;此錯誤只能在運行時發生,如果某些類的定義自上次編譯當前執行的方法以來發生了不兼容的更改。

顯然,您有一個JDBC驅動程序的老版本在類路徑中漫遊,或者您的JDBC驅動程序需要升級以匹配所使用的JRE版本中的JDBC API。您可以在Sqlite主頁上獲得最新版本。

2

我已經與sqlite的JDBC良好的dirver成功從xerial.org:http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC

Xerial的SQLite的JDBC實現了PreparedStatement.setBytes(索引,字節[])。您應該能夠從您的FileInputStream使用下面的鏈接代碼的字節數組:http://www.java-tips.org/java-se-tips/java.io/reading-a-file-into-a-byte-array.html

當存放東西的斑點小心以下問題:http://effbot.org/zone/sqlite-blob.htm

我希望這有助於。

-Alex