Android 學習筆記之 SQLite基礎用法

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     }

復制代碼

由於我也是個菜鳥,都是比較基礎的知識,希望能幫助和我一樣菜的同孩們。。。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *