SQLite是Android中的輕量級的數據庫,其基本操作有增、刪、查、改。每一種操作都有兩個方法,一種是通過SQL語句來執行,一種是用Android提供的方法。
一、創建數據庫(數據庫只創建一次)
復制代碼
1 public class DBHelper extends SQLiteOpenHelper {
2
3 private static final String DB_NAME = "Test.db";// 數據庫名稱
4 private static final String TBL_NAME_TEST = "TestTabName"; // 表名稱
5 // 創建數據庫的SQL語句
6 private static final String CREATE_TBL_TEST = "create table TestTabName(_id integer primary key autoincrement,TestNum text,TestName text)";
7 private SQLiteDatabase db;
8
9 /**
10 * 構造函數
11 *
12 * @param context
13 * 上下文
14 * @param name
15 * 數據庫名稱
16 * @param factory
17 * @param version
18 * 版本號
19 */
20 public DBHelper(Context context) {
21 super(context, DB_NAME, null, 2);
22 // TODO Auto-generated constructor stub
23 }
24
25 // 創建數據庫
26 @Override
27 public void onCreate(SQLiteDatabase db) {
28 // TODO Auto-generated method stub
29 this.db = db;
30 // 創建表
31 db.execSQL(TBL_NAME_TEST);
32
33 }
34
35 // 數據庫更新
36 @Override
37 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
38 // TODO Auto-generated method stub
39
40 }
復制代碼
二、數據庫的操作
1>增(也就是向指定的數據庫中插入一條數據)
復制代碼
1 /**
2 * 向指定數據庫中插入一條數據
3 *
4 * @param values
5 * ContentValues 鍵值對, 相當於map
6 * @param tableName
7 * 表名稱
8 */
9 public void insert(ContentValues values, String tableName) {
10
11 SQLiteDatabase db = getWritableDatabase();
12 db.insert(tableName, null, values);
13 db.close();
14
15 }
復制代碼
2>刪(可以刪除表中所有數據,也可以指定滿足條件的數據)
復制代碼
1 /**
2 * 根據ID刪除一條數據
3 *
4 * @param id
5 * @param tableName
6 */
7 public void del(int id, String tableName) {
8
9 if (db == null)
10 db = getWritableDatabase();
11 db.delete(tableName, "_id=?", new String[] { String.valueOf(id) });
12
13 }
14
15 /**
16 * 刪除表中所有數據
17 *
18 * @param tableName
19 */
20 public void delAll(String tableName) {
21
22 if (db == null)
23 db = getWritableDatabase();
24 String sql = "Delete from " + tableName;
25 try {
26 db.execSQL(sql);
27 } catch (Exception e) {
28 // TODO: handle exception
29 System.out.print(e);
30 }
31
32 }
復制代碼
3>改(更新一條指定的數據)
復制代碼
1 /**
2 * 更新一條數據
3 *
4 * @param values
5 * 要更新的數據
6 * @param id
7 * 更新的條件
8 * @param tableName
9 * 更新的表名稱
10 * @return
11 */
12 public boolean updataData(ContentValues values, int id, String tableName) {
13 boolean bool = false;
14 SQLiteDatabase db = getWritableDatabase();
15 bool = db.update(tableName, values, "_id=" + id, null) > 0;
16 return bool;
17
18 }
復制代碼
4>查(查詢數據,返回的是游標類型的數據,對它進行讀取,打開一個游標,當結束後要關閉游標)
復制代碼
1 /**
2 * 返回表中所有數據
3 *
4 * @param tableName
5 * 表名稱
6 * @return
7 */
8 public List<String> quertAll(String tableName) {
9 List<String> list = new ArrayList<String>();
10 Cursor c = null;
11 SQLiteDatabase db = getWritableDatabase();
12 c = db.query(tableName, null, null, null, null, null, null);
13 // 提取游標中的值
14 try {
15 for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
16 // 根據列名獲取數據
17 String TestNum = c.getString(c.getColumnIndex("TestNum"));
18 list.add(TestNum);
19 }
20 } catch (Exception e) {
21 // TODO: handle exception
22 } finally {
23 //關閉游標
24 c.close();
25 }
26
27 return list;
28 }
復制代碼
根據條件獲取表中的值
復制代碼
1 /**
2 * 根據條件查詢數據
3 *
4 * @param where
5 * 條件
6 * @param tableName
7 * 表名稱
8 * @return 這邊我就不獲取游標中的值了,同上。
9 */
10 public Cursor quertToWhere(String where, String tableName) {
11
12 Cursor c = null;
13 SQLiteDatabase db = getWritableDatabase();
14 try {
15 c = db.query(tableName, null, where, null, null, null, null);
16 } catch (Exception e) {
17 // TODO: handle exception
18 String msg = e.toString();
19 Log.i("", msg);
20 }
21 return c;
22 }