Android數據庫框架對比 Android數據庫框架更換



文章插圖
Android數據庫框架對比 Android數據庫框架更換

文章插圖
Android數據庫 , 已經基本理解了數據庫操作 , 其實很簡單 , 就是創建一個數據庫 , 在里面創建一個表 , 然后每一次操作數據庫的時候都要重新打開數據庫 , 指定當前創建的對象是可讀寫還是只讀的 , 然后數據庫版本號必須為整型且必須增長 , 具體思路如下:
首先呢 , 自己寫一個MySQLiteOpenHelper類來繼承SQLiteOpenHelper類并實現其中的一些方法 , 代碼如下:
//數據庫版本號private static Integer Version = 1;
//在SQLiteOpenHelper的子類當中 , 必須有該構造函數
public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
//必須通過super調用父類當中的構造函數
super(context, name, factory, version); }
//參數說明
//context:上下文對象
//name:數據庫名稱
//param:factory
//version:當前數據庫的版本 , 值必須是整數并且是遞增的狀態
public MySQLiteOpenHelper(Context context,String name,int version)
{ this(context,name,null,version);
}
public MySQLiteOpenHelper(Context context,String name)
{ this(context, name, Version);
}
//當數據庫創建的時候被調用
@Override
public void onCreate(SQLiteDatabase db)
{ System.out.println(“創建數據庫和表”);
//創建了數據庫并創建一個叫records的表
//SQLite數據創建支持的數據類型: 整型數據 , 字符串類型 , 日期類型 , 二進制的數據類型
String sql = “create table user(id int primary key,name varchar(200))”;
//execSQL用于執行SQL語句
//完成數據庫的創建
db.execSQL(sql);
//數據庫實際上是沒有被創建或者打開的 , 直到getWritableDatabase() 或者 getReadableDatabase() 方法中的一個被調用時才會進行創建或者打開 }
//數據庫升級時調用
//如果DATABASE_VERSION值被改為2,系統發現現有數據庫版本不同,即會調用onUpgrade()方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { System.out.println(“更新數據庫版本為:”+newVersion); }}
然后在mainactivity里面執行以下一些操作 , 
一 , 創建數據庫以及創建數據庫的語句:
create table user(id int primary key,name varchar(200))
意思是創建一個名為user的數據庫 , 里面有兩個類 , 一個是primary key ——id , 意思是id是這個數據庫的關鍵詞 , 還有一個varchar長度為200的字符 , 通過事件監聽Button來實現以下代碼:
case R.id.instablish:
// 創建SQLiteOpenHelper子類對象
MySQLiteOpenHelper dbHelper = new MySQLiteOpenHelper(this,”test_carson”);
//數據庫實際上是沒有被創建或者打開的 , 直到getWritableDatabase() 或者 getReadableDatabase() 方法中的一個被調用時才會進行創建或者打開
SQLiteDatabase sqliteDatabase = dbHelper.getWritableDatabase();
// SQLiteDatabase sqliteDatabase = dbHelper.getReadbleDatabase();
break;
二 , 更新數據庫的版本號
case R.id.upgrade:
// 創建SQLiteOpenHelper子類對象
MySQLiteOpenHelper dbHelper_upgrade = new MySQLiteOpenHelper(this,”test_carson”,2);
// 調用getWritableDatabase()方法創建或打開一個可以讀的數據庫
SQLiteDatabase sqliteDatabase_upgrade = dbHelper_upgrade.getWritableDatabase();
// SQLiteDatabase sqliteDatabase = dbHelper.getReadbleDatabase();
break;
三 , 向數據庫里面傳入一條數據
emmm , 類型有點像hashmap數組 , 都是鍵值對類型數組
case R.id.insert: System.out.println(“插入數據”);
// 創建SQLiteOpenHelper子類對象
////注意 , 一定要傳入最新的數據庫版本號
MySQLiteOpenHelper dbHelper1 = new MySQLiteOpenHelper(this,”test_carson”,2);
// 調用getWritableDatabase()方法創建或打開一個可以讀的數據庫
SQLiteDatabase sqliteDatabase1 = dbHelper1.getWritableDatabase();
// 創建ContentValues對象 ContentValues values1 = new ContentValues();
// 向該對象中插入鍵值對 values1.put(“id”, 1); values1.put(“name”, “carson”);
// 調用insert()方法將數據插入到數據庫當中 sqliteDatabase1.insert(“user”, null, values1);
// sqliteDatabase.execSQL(“insert into user (id,name) values (1,’carson’)”);
//關閉數據庫
sqliteDatabase1.close(); break;
四 , 查詢數據庫里面的數據
//點擊查詢數據庫 case R.id.query: System.out.println(“查詢數據”);
// 創建DatabaseHelper對象 MySQLiteOpenHelper dbHelper4 = new MySQLiteOpenHelper(MainActivity.this,”test_carson”,2);
// 調用getWritableDatabase()方法創建或打開一個可以讀的數據庫
SQLiteDatabase sqliteDatabase4 = dbHelper4.getReadableDatabase();
// 調用SQLiteDatabase對象的query方法進行查詢
// 返回一個Cursor對象:由數據庫查詢返回的結果集對象
Cursor cursor = sqliteDatabase4.query(“user”, new String[] { “id”, “name” }, “id=?”, new String[] { “1” }, null, null, null);
String id = null; String name = null;
//將光標移動到下一行 , 從而判斷該結果集是否還有下一條數據
//如果有則返回true , 沒有則返回false while (cursor.moveToNext()) { id = cursor.getString(cursor.getColumnIndex(“id”));
name = cursor.getString(cursor.getColumnIndex(“name”));
//輸出查詢結果
System.out.println(“查詢到的數據是:”+”id: “+id+” “+”name: “+name); }
//關閉數據庫 sqliteDatabase4.close(); break;
五 , 修改數據 , 通過尋找鍵的方法來改變值
case R.id.modify: System.out.println(“修改數據”);
// 創建一個DatabaseHelper對象
// 將數據庫的版本升級為2
// 傳入版本號為2 , 大于舊版本(1) , 所以會調用onUpgrade()升級數據庫
MySQLiteOpenHelper dbHelper2 = new MySQLiteOpenHelper(MainActivity.this,”test_carson”, 2);
// 調用getWritableDatabase()得到一個可寫的SQLiteDatabase對象
SQLiteDatabase sqliteDatabase2 = dbHelper2.getWritableDatabase();
// 創建一個ContentValues對象 ContentValues values2 = new ContentValues();
values2.put(“name”, “zhangsan”);
// 調用update方法修改數據庫
【Android數據庫框架對比 Android數據庫框架更換】sqliteDatabase2.update(“user”, values2, “id=?”, new String[]{“1”});
//關閉數據庫 sqliteDatabase2.close(); break;
六 , 刪除數據 , 通過尋找鍵來刪除整個鍵值對
case R.id.delete: System.out.println(“刪除數據”);
// 創建DatabaseHelper對象
MySQLiteOpenHelper dbHelper3 = new MySQLiteOpenHelper(MainActivity.this,”test_carson”,2); // 調用getWritableDatabase()方法創建或打開一個可以讀的數據庫
SQLiteDatabase sqliteDatabase3 = dbHelper3.getWritableDatabase();
//刪除數據 sqliteDatabase3.delete(“user”, “id=?”, new String[]{“1”});
//關閉數據庫 sqliteDatabase3.close(); break;
七 , 刪除數據庫操作
case R.id.delete_database: System.out.println(“刪除數據庫”);
MySQLiteOpenHelper dbHelper5 = new MySQLiteOpenHelper(MainActivity.this, “test_carson”,2);
// 調用getReadableDatabase()方法創建或打開一個可以讀的數據庫
SQLiteDatabase sqliteDatabase5 = dbHelper5.getReadableDatabase();
//刪除名為test.db數據庫
deleteDatabase(“test_carson”);