Android數據庫代碼優(yōu)化(1) - 從Google的數據庫guide說起

假如我們沒有任何在Android上使用SQLite的經驗,現(xiàn)在要開始在工作中用SQLite存儲一些數據。OK, 我們去看google的官方培訓文檔吧,http://developer.android.com/training/basics/data-storage/databases.html
差不多有個5分鐘到15分鐘吧,這篇官方培訓文檔就看完了,然后就可以在應用中使用了,它提示的幾個Note我們也都注意到了,沒犯任何錯誤。這時候寫出來的代碼是什么下場呢?
首先是內存泄漏吧,教程沒有教用try...finally關Cursor的好習慣,甚至都沒提關Cursor這事兒。
其次crash肯定不少,教程里對于execSQL,getWritableDatabase這些容易出exception的語句,沒給要加try...catch的提示。
第三你會習慣用getColumnIndexOrThrow吧?會想到其實直接傳個常數進去就可以了么?

long itemId = cursor.getLong(cursor.getColumnIndexOrThrow(FeedEntry._ID));

第四,你能想到SQLite的特色功能自動解決沖突有個insertWithOnConflict方法可以調么?自己寫select多查一次性能受影響吧?insert出exception會影響性能吧?
第五,update和delete用ID的時候還用LIKE語句?SQLite的索引是不支持LIKE的,生怕能用上索引加快點速度么。。。

String selection =FeedEntry.COLUMN_NAME_ENTRY_ID +" LIKE ?";

看了很多講優(yōu)化的書和網上的文章,似乎針對于Android上的SQLite部分關注得都比較少. 下面我們就來共同探討一下這些問題.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容