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方法修改資料庫

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-tw/n/230086.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-10 13:18
下一篇 2024-12-10 13:18

相關推薦

發表回復

登錄後才能評論