實現數據庫基本操作
數據庫創建的問題解決了,接下來就該使用數據庫實現應用程序功能的時候了。基本的操作包括創建、讀取、更新、刪除,即我們通常說的CRUD(Create, Read, Update, Delete)。在實現這些操作的時候,我們會使用到兩個比較重要的類,SQLiteDatabase類和Cursor類。
SQLiteDatabase類在上面已經接觸過了,這個類是核心類,用於管理和操作SQLite數據庫,幾乎所有的數據庫操作,最終都將由這個類完成。
Cursor類主要用於保存查詢返回的結果,提供隨機讀、寫的功能,從這一點上來看,有點類似於ado中的Dataset。Cursor類非常重要,在數據庫操作中,在UI中,經常會用到Cursor,所以大家一定要掌握Cursor 的用法。
下面我們用實例來說明如何實現CRUD操作。首先,我們創建一個客戶資料相關的數據存取類,在這個類中,我們實現基本的增刪改查等操作,需要的話,大家可以自己添加其它的代碼等等,這裡我們只是演示數據庫的基本操作。
限於篇幅,這裡就不詳細解釋了,代碼中都有詳細的注釋,如下所示:
view plaincopy to clipboardprint?
package com.yulingkong.customer;
//為了節省篇幅,忽略了import項,請自行添加
public
class CustomerAL {
// 表名稱
private
static
final String TABLE_NAME = "Customers";
private SQLiteDatabase mDB;
/**
* CustomerAL構造函數
* @param db SQLiteDatabase類實例
*/
public CustomerAL(SQLiteDatabase db) {
mDB = db;
}
/**
* 添加客戶資料
* @param name 客戶姓名
* @param address 客戶地址
*/
public
long add(String name, String address) {
// 使用ContentValues保存列和列對應的值
ContentValues values = new ContentValues();
values.put("Name", name);
values.put("Address", address);
// 調用SQLiteDatabase類的insert函數添加記錄
return mDB.insert(TABLE_NAME, null, values);
}
/**
* 刪除客戶資料
* @param id 客戶的id號
*/
public
int delete(long id) {
// 查詢條件語句
String[] whereArgs = new String[]{Long.toString(id)};
// 查詢匹配條件,與selection要對應
String whereClause = "_id=?";
// 調用SQLiteDatabase類的delete函數刪除記錄
return mDB.delete(TABLE_NAME, whereClause, whereArgs);
}
/**
* 根據客戶的id,查詢客戶的資料,查詢結果保存在Cursor中
* @param id 客戶的id號
*/
public Cursor getById(long id) {
// 要返回的列
String[] columns = new String[]{"Name", "Address"};
// 查詢條件語句
String selection = "_id=?";
// 查詢匹配條件,與selection要對應
String[] selectionArgs = new String[]{Long.toString(id)};
// 調用SQLiteDatabase類的query函數查詢記錄
return mDB.query(TABLE_NAME, columns, selection, selectionArgs, null, null, null);
}
/**
* 返回所有的客戶資料
*/
public Cursor getAll() {
// 需要返回的列
String[] columns = new String[]{"Name", "Address"};
// 調用SQLiteDatabase類的query函數查詢記錄
return mDB.query(TABLE_NAME, columns, null, null, null, null, null);
}
}