Android中數據庫的使用:sql
1.建立一個類,繼承SQLiteOpenHelper,實現該類的構造方法 public XXX(Context context, String name, CursorFactory factory, int version) -->該構造方法能夠只設置一個參數Context context,其他參數可在surper中肯定 public XXX(Context context, String name, CursorFactory factory, int version){ surper(context,name,factory,version); } -->改進以後 public XXXX(Context context){ surper(context,"xxx.db",null,1); } -->構造方法中參數的含義 context---上下文 name---數據庫名稱 factory---遊標對象,默認爲空 version---版本,從1開始的遞增整數 2.建立好了類以後,重寫onCreate()和onUpgrade()方法 -->onCreate()方法,在數據庫第一次建立時調用,該方法主要用於表結構的建立。 因此,全部建表的sql語句,都在改方法中執行. db.execSQL("sql"); -->onUpgrade()方法,數據庫版本號改變/修改表結構(增/刪一個字段)調用 3.實例化XXX類,調用靜態方法getReadableDatabase/getWritableDatabase,獲得SQLiteDatabase對象 XXX xx = new XXX(context); SQLiteDatabase db = xx.getReadableDatabase(); ☆☆☆操做完db及時關閉數據庫,減小內存消耗 db.close(); 4.進行增刪改查操做 -->增長 long result = db.insert(String table, String nullColumnHack, ContentValues values); table:表名 nullColumnHack:默認爲null,爲null時表示插入一個空行 values:添加那條數據的值,底層由HashMap實現,values.put(key,value)實現數據的添加 result:返回添加成功後那一行的ID,-1添加失敗 -->刪除 int result = db.delete(String table, String whereClause, String[] whereArgs); whereArgs:判斷條件,如"name=?" whereClause:判斷條件的佔位符,String[]類型 new String[]{"小王"} result:刪除的行數 -->更新 相似刪除,多一個value update(String table, ContentValues values, String whereClause, String[] whereArgs) value:存放要更新的信息 -->查詢(Cursor遊標對象) Cursor cursor = db.rawQuery(sql語句,查詢條件) 返回cursor結果集 cursor.getCount()獲取結果集的行數 cursor.moveToNext()判斷是否有下一行內容,有返回true,無返回false; ☆☆☆cursor使用完後須要關閉,cursor.close(); 5.優化 避免每次操做數據庫,都實例化一個XXX類,建立數據庫的過程放在dao的構造函數中, ☆☆☆☆其中,獲取SQLiteDatabase對象的方法不能放在構造函數中。由於,在構造函數中 只獲取了一個SQLiteDatabase對象,而每次對數據進行不一樣的操做後都關閉了數據庫,在以 後的操做中,就沒法得到SQLiteDatabase對象,從而致使對數據操做失敗! -----------2016年10月14日22:10:07