Android數據存儲之SQLite存儲

上一篇文章:http://blog.csdn.net/qq_34942689/article/details/65633451 中簡單的介紹了一下Android中用於數據存儲的一些方式,上一篇文章中介紹了SharedPreferences的使用以及我個人的一些封裝,接下來呢就來介紹一下Android存儲提供的數據存儲方式的第二個SQLite數據存儲。

SQLite是一種轉爲嵌入式的輕量級的數據庫,比較適合少量數據的存儲;在使用過程允許使用SQL語句操作數據庫,其操作的本質上是一個文件,不需要安裝和啓動,在操作過程中,SQLite數據庫是打開了一個文件的讀寫流,但是SQLite比較適合少量數據的讀寫以及存儲。

接下來就介紹一下SQLite數據的一些使用步驟:

步驟一:創建操作數據庫的輔助類

public class MySQLHelper extends SQLiteOpenHelper {
    // 數據庫名稱
    public static final String DBNAME = "text.db";
    // 數據庫版本
    public static final int VERSION = 2;
    // 建表語句,大小寫不敏感
    private static final String CREATETABLE = "create table "
            + "(id string, name string, gender int, age int)";

    public MySQLHelper(Context context) {
        super(context, DBNAME, null, VERSION);

    }
    // 創建表
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATETABLE);
    }
    /**
     * 更新表
     * @param db 表名
     * @param oldVersion 舊版本
     * @param newVersion 新版本
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        this.deleteDB(db);
        this.onCreate(db);
    }

    /**
     * 刪除表
     * @param db 表名
     */
    private void deleteDB(SQLiteDatabase db) {
        db.execSQL("drop table if exists ");
    }
}

步驟二:數據庫的操作

public class DateBaseHelper {
    //引入數據庫操作的輔助類
    private MySQLHelper dbHelper;

    public DateBaseHelper(Context context) {
        dbHelper = new MySQLHelper(context);
    }

    /**
     * 插入的方法
     *
     * @param person 對象
     * @return 返回值
     */
    public int insert(Person person) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();//獲取數據庫的操作類
        db.beginTransaction();//開啓
        try {
            db.execSQL("insert into " + Person.TABLENAME
                    + " values(?, ?, ?, ?)", new Object[]{person.id,
                    person.name, person.age});
            db.setTransactionSuccessful();
        } catch (Exception e) {
            return 0;
        } finally {
            db.endTransaction();
        }
        db.close();
        return 1;
    }
    /**
     * 更新
     * @param person
     * @return
     */
    public int update(Person person) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        db.beginTransaction();
        try {
            db.execSQL("update " + Person.TABLENAME
                    + " set name=?, gender=?, age=? where id=?", new Object[]{
                    person.name, person.age, person.id});
            db.setTransactionSuccessful();
        } catch (Exception e) {
            return 0;
        } finally {
            db.endTransaction();
        }
        db.close();
        return 1;
    }

    /**
     * 查詢
     *
     * @param id
     * @return
     */
    public ArrayList<Person> query(String id) {
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        Cursor cursor;
        Person person;
        ArrayList<Person> list = new ArrayList<Person>();
        // 若fileId爲null或""則查詢所有記錄
        if (id == null || id.equals("")) {
            cursor = db.rawQuery("select * from " + Person.TABLENAME, null);
        } else {
            cursor = db.rawQuery("select * from " + Person.TABLENAME
                    + " where id=?", new String[]{id});
        }
        while (cursor.moveToNext()) {
            person = new Person();
            person.id = cursor.getString(cursor.getColumnIndex("id"));
            person.name = cursor.getString(cursor.getColumnIndex("name"));
            person.age = cursor.getInt(cursor.getColumnIndex("age"));
            Log.e("SQLite", person.toString());
            list.add(person);
        }
        cursor.close();
        db.close();
        if (list.size() == 0) {
            Log.d("SQLite", "表中無數據");
        }
        return list;
    }
}

這裏呢我寫了三個方法,其中刪除的方法沒寫,因爲刪除的方法其實和增加的方法是差不多的,區別在於操作的sql語句不同。

在操作的過程中需要注意幾點:

1:數據庫的操作類對象需要通過輔助類去獲取;

2:事物在開啓之後一定要關閉。

在Android中操作SQLite數據的時候一共需要用到SQLiteOpenHelper,SQLiteDatabase,Cursor(遊標)三個類,下面是其中的一些參數和構造方法的解釋

1.SQLiteOpenHelper
SQLiteOpenHelper 構造方法,一般傳遞一個要創建的數據庫名稱name參數
onCreate 創建數據庫時調用
onUpgrade 版本更新時調用
getReadableDatabase 創建或打開一個只讀數據庫
getWritableDatabase 創建或打開一個讀寫數據庫

2.SQLiteDatabase
openOrCreateDatabase 打開或者創建數據庫
insert 添加一條記錄
delete 刪除一條記錄
query 查詢記錄
update 更新記錄
execSQL 執行一條SQL語句
close 關閉數據庫

3.Cursor
getCount 總記錄條數
isFirst 判斷是否第一條記錄
isLast 判斷是否最後一條記錄
moveToFirst 移動到第一條記錄
moveToLast 移動到最後一條記錄
move 移動到指定記錄
moveToNext 移動到下一條記錄
moveToPrevious 移動到上一條記錄
getColumnIndexOrThrow根據列名稱獲得列索引
getInt 獲得指定列索引的int類型值
getString 獲得指定列索引的String類型值

至此呢一個簡單的SQLite數據存儲操作就結束了,最後別忘了權限哦,謝謝

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章