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方法修改數據庫
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”);
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/230086.html