1. 程式人生 > >Android如何使用JDBC連線SQLite資料庫?

Android如何使用JDBC連線SQLite資料庫?

【首先把結論說出來:不到萬不得已最好不要使用JDBC操作SQLite資料庫】

最近兩天一直在搗鼓JDBC與SQLite相連線的事情,想使用jdbc的preparedStatement類實現對SQLite資料庫的操作。在Java專案上能夠成功載入JDBC驅動,也就是這句話能夠被成功執行: Class.forName("org.sqlite.JDBC") ;,但是一旦移植到Android專案上各種bug橫行其道:

【java.lang.ClassNotFoundException: com.sqlite.jdbc.Driver】

【unable to execute dex: gc overhead limit exxeeded】

【An out of memory error has occurred】

【no suitable driver found for jdbc:sqlite:db/test.db】

。。。。。。。。。。

百度了兩天,各種解決方案都嘗試了,最後還是無法執行。然後翻過去用谷歌搜尋了一下答案,發現國外有位網友也有同樣的困惑,我就不復制貼上了,截圖如下:

-----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------

他的大概意思就是:我想在我的Android專案中讀取一個數據庫的內容,所以就把該資料庫放在一個資料夾裡面。我準備通過JDBC建立與該資料庫的連線,然後我匯入JDBC 的jar包並且通過如下語句實現驅動的載入與資料庫的連線,在Java專案中這樣做很成功,但是當我想在Android專案中實現該功能時,中會出現ClassNotFoundException的異常,我檢查了自己的專案,沒發現什麼錯誤啊。請問為什麼會出現這種異常?

有一位網友這樣答道:

------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------

他的意思是說:你非得這樣做嗎?我覺著只有0.1%的Android程式設計師會在Android專案中使用JDBC,只用0.05的程式設計師會在Android專案中把JDBC與SQLite資料庫結合使用。很多已經Android中已經封裝好的類例如SQLiteDatabaseSQLiteOpenHelper已經可以提供很強大的資料庫操作功能了。

還有一位網友這樣答道:

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 

他的大概意思是說:

JDBC確實不適合在Android上面使用,我絕對不會推薦在Android專案中使用JDBC

JDBC適合於高寬頻、低延遲、高可靠性的網路連線,例如B/S,D/S中的資料庫服務,Android裝置一點也不符合這些特性。

=======================================================================================================

2015年4月9日11:39:23補充

我想在Android中使用JDBC的朋友有一部分是想用JDBC裡面的PreparedStatement類吧,因為preparedStatement提供了很多對資料庫的便捷操作。如果是這樣的話只能說你捨近求遠了。在SQLiteDatabase類中已經提供了很強大的功能實現了。SQLiteDatabase的作用類似於JDBC的Connection,例如方法Cursor rawQuery(String sql String[] selectinArgs)返回的Cursor就像JDBC中的ReultSet。JDBC裡面的PrepatedStatement提供了setXXX()方法,同樣Android中的SQLiteStatement也提供了類似的bindXXX()方法。

========================================================================================================

總而言之,在Android專案開發中不適合使用JDBC。