android SQLite的使用

Android作爲目前主流的移動操作系統,完全符合SQLite佔用資源少的優勢,故在Android平臺上,集成了一個嵌入式關係型數據庫—SQLite。如果你想要開發 Android 應用程序,一定需要在 Android 上存儲數據,使用SQLite 數據庫是一種非常好的選擇。

1、要使用Android SQLite必須要繼承一個類——SQLiteOpenHelper。

public class MySQLiteOpenHelper extends SQLiteOpenHelper {

    /**
     *  構造方法
     * @param context 上下文
     * @param name  數據庫的名稱
     * @param factory 遊標工廠 一般默認爲null
     * @param version 數據庫版本
     */
    public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    //只有數據庫創建的時候調用,適合創建數據庫的表結構
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table contact(_id integer primary key autoincrement ," +
                "cname varchar(10), telephone varchar(10))");
    }

    //只有數據庫的版本更新的時候執行,適合修改數據庫的表的結構
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

2.數據庫操作工具類。

public class DBUtils {

    private static MySQLiteOpenHelper helper;
    private static DBUtils dbUtils ;
    //表的名稱
    public static final String table_contact = "contact" ;
    private SQLiteDatabase db ;

    public DBUtils(Context context) {
        helper = new MySQLiteOpenHelper(context,"contacts.db",null,1);
        db = helper.getWritableDatabase();
    }
    /**
     *  單利模式創建數據庫
     * @param context
     * @return
     */
    public static synchronized DBUtils getInstance(Context context){
        if(dbUtils == null){
            dbUtils = new DBUtils(context);
        }
        return dbUtils;
    }

    /**
     *  增加數據
     * @param name 聯繫人名稱
     * @param number 電話號碼
     */
    public void addData(String name ,String number){
        ContentValues values = new ContentValues();
        values.put("cname", name); // KEY 是列名,vlaue 是該列的值
        values.put("telephone", number); // KEY 是列名,vlaue 是該列的值

        // 參數一:表名,參數三,是插入的內容
        // 參數二:只要能保存 values 中是有內容的,第二個參數可以忽略
        db.insert(table_contact, null, values);

    }

    /**
     * 根據聯繫人名字刪除聯繫人
     * @param name 聯繫人名字
     */
    public void deleteData(String name){
        String whereClause="cname = ?"; //條件
        String[] whereArgs={name};          //條件參數
        db.delete(table_contact,whereClause,whereArgs);
    }

    /**
     *  根據聯繫人名稱修改電話號碼
     * @param name 聯繫人
     * @param number 號碼
     */
    public void updateData(String name ,String number){
        ContentValues values = new ContentValues();
        values.put("telephone",number);
        String whereClause = "name = ?"; //條件
        String[] whereArgs = {name} ;    //條件參數
        db.update(table_contact,values,whereClause,whereArgs);
    }

    /**
     * 查詢所有數據
     */
    public void queryData(){
        String[] columns={"cname","telephone"};
        String selection = null; //選擇的條件
        String[] selectionArgs = null; //選擇條件的參數
        String groupBy = null;  //組別
        String having = null;   //傳遞NULL將導致所有行組被包含,並且在不使用行分組時需要.。
        String orderBy = null;  //排序
        Cursor cursor = db.query(table_contact, columns, selection, selectionArgs, groupBy, having, orderBy);
        while(cursor.moveToNext()){
            String cname = cursor.getString(cursor.getColumnIndex("cname"));
            String telephone = cursor.getString(cursor.getColumnIndex("telephone"));
            System.out.println("名字:"+cname+" ;   電話:"+telephone);
        }
    }

}

3.在用到的數據庫的代碼中調用數據庫操作。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //創建數據庫
        DBUtils dbUtils = DBUtils.getInstance(this);
    //添加數據
        dbUtils.addData("zhangkefeng","18626255712");
        dbUtils.addData("xiaoqiang","18626255712");

    //查詢數據
        dbUtils.queryData();
        //刪除數據
        dbUtils.deleteData("zhangkefeng");
        //修改數據
        dbUtils.updateData("xiaoqiang","18137668837");
    }


}

可以在模擬器上運行,在data/data 目錄下找到 你的包名 下的database文件夾裏找到自己的數據庫
這裏寫圖片描述

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