可參考
http://stackoverflow.com/questions/5786206/to-to-implement-a-sqlite-manager-for-thread-safe-read-write-access
2014年5月10日 星期六
2013年6月4日 星期二
在Android中sqlite join資料表時使用getColumnIndex錯誤
在select時使用table.a As bbb 為欄位命名的這種方法,在getColumnIndex就用命名後的欄位名稱,這樣就不會錯誤囉...詳以下網址
http://stackoverflow.com/questions/14576100/android-how-to-access-results-from-cursor-when-inner-join-is-performed
http://stackoverflow.com/questions/14576100/android-how-to-access-results-from-cursor-when-inner-join-is-performed
2012年4月16日 星期一
在Android 使用Sqlite注意事項
近來使用Sqlite時一直遇到很多挫折,所以將這些問題紀錄下來,防止下次出現相同錯誤。
- 在Fragment中如果要傳入this(getActivity())這個參數時,一定要在onActivityCreated之後,不然一定出現 NullPointerException,這個問題很簡單卻困擾了我一天。
- 如果在這個Activity中有使用到cursor,可以在最上層定義Cursor curosr=null,然後在Activity進入onPause() 時定義關閉,例如: if(cursor!=null){cursor.close();},然後在關閉db,例如: if(db!=null){db.close();}
2012年4月10日 星期二
檢查sqlite中某個資料表是否存在
有兩種方法,
第一種方法是:不需要知道表是否存在,在創建表的時候加上if not exists 例:create table if not exists myTable(...) ,這樣做的好處是,不需要知道表是否存在,只要每次都進行創建即可。因為裡面有判斷,如果表存在的時候,再執行這句不會發生重複創建表的情況。
第二種方法是:直接執行某個SQL語句,用try...catch來捕獲數據庫操作的異常。當異常表示數據庫表不存在的時候,再進行處理。例:
try{
Cursor c = getWritableDatabase().query("select * from myTable",null );
catch(Exception e) // 或者是 SQLiteException .
{//添加處理代碼,例如:創建表。
}
第二種的方法不如第一種好,原因是:第二種寫起來比較麻煩,還有,如果有其它異常的時候,需要對異常來進行判別,並處理。
PS:
上面的E文中有一種方法是判斷query的返回值 ,那個別想了,我在測試的時候,如果表被刪除了,一到那裡就崩潰,只能通過try...catch的方法。
訂閱:
意見 (Atom)
星期、月份英文縮寫
中文 英文 3字母 縮寫 3字母 縮寫 2字母 縮寫 2字母 縮寫 1字母 縮寫 1字母 縮寫 其他 縮寫 星期日 Sunday SUN Sun SU Su S S 星期一 Monday MON Mon MO Mo M M 星期二 Tuesday TUE Tue TU ...
-
要把經緯度店址可以使用以下作法 Geocoder gc = new Geocoder(getActivity(), Locale.TRADITIONAL_CHINESE); List<Address> lstAddress = gc.getFromLocation...
-
在官方的範例中有以下做法 http://developer.android.com/training/basics/fragments/communicating.html //左側Fragment public class MainLeftFragment extend...
-
中文 英文 3字母 縮寫 3字母 縮寫 2字母 縮寫 2字母 縮寫 1字母 縮寫 1字母 縮寫 其他 縮寫 星期日 Sunday SUN Sun SU Su S S 星期一 Monday MON Mon MO Mo M M 星期二 Tuesday TUE Tue TU ...