1.概述
- 使用SQLite存儲數據。
數據庫文件存儲在/data/data/包名/databases/下。
和SQL聯系到一起。
2.用法
- 繼承SQliteOpenHelper類
構造方法:SQLiteOpenHelper(context,數據庫名,null(可以自定義的cursor),版本號)
需要重寫onCreate和onUpgrade方法。
方法 | 用處 |
---|---|
onCreate() | 第一次創建數據庫時調用 |
onUpgrade() | 數據庫升級時調用 |
- 實例化SQLiteDatabase類,使用getReadleDatabase或getWriterDatabase進行讀取數據庫。
方法 | 用處 |
---|---|
getReadleDatabase() | 先以讀寫方式打開數據庫,如果數據庫不可寫入,則以只讀打開。 |
getWriterDatabase() | 以讀寫方式打開數據庫,如果數據庫不可寫入,則出現異常 |
- 實例化后SQLiteDatabase類的SELECT、INSERT、DELETE、UPDATE
- db.quary(table,columns,selection,selectionArgs,groupBy,having,orderBy);
參數 | 含義 |
---|---|
table | 表名 |
columns | 列名 |
selection | where約束條件 |
selectionArgs | where占位符的具體指 |
groupBy | groupBy約束條件 |
having | 其他約束條件 |
orderBy | 排序方式 |
將cursor獲取返回的內容,使用cursor.getString(cursor.getColumnIndex("列名"))獲取具體列的值。
- db.insert(table,null,ContentValues);
參數 | 含義 |
---|---|
table | 表名 |
null | 未指定添加數據下自動賦值null |
ContentValues | 數據組合,使用put(列名,值)加入。 |
- db.update(table,ContentValues,約束,約束占位符中的值);
- db.delete(table,約束,約束占位符中的值)
3.例子
* 繼承SQLiteOpenHelper類的StuDBhelper類
public class StuDBHelper extends SQLiteOpenHelper {
Context mcontext;
private static String createStuTable="create table student(" +
"id integer primary key autoincrement," +
"name varchar(16)," +
"password varchar(16))";
private static String createTeaTable="create table teacher(" +
"id integer primary key autoincrement," +
"name varchar(16)," +
"password varchar(16))";
public StuDBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
this.mcontext=context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(createStuTable);
Toast.makeText(mcontext,"student數據庫已創建",Toast.LENGTH_SHORT).show();
db.execSQL(createTeaTable);
Toast.makeText(mcontext,"teacher數據庫已創建",Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists student");
db.execSQL("drop table if exists teacher");
onCreate(db);
Toast.makeText(mcontext,"數據庫已更新",Toast.LENGTH_SHORT).show();
}
}
- 主要操作
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_createdb:
dbHelper = new StuDBHelper(this, "School.db", null, 1);
db = dbHelper.getReadableDatabase();
break;
case R.id.btn_updatedb:
dbHelper = new StuDBHelper(this, "School.db", null, 2);
db = dbHelper.getReadableDatabase();
break;
case R.id.btn_deletedb:
deleteDatabase("School.db");
deleteDatabase("Teacher.db");
Toast.makeText(this,"數據庫已刪除",Toast.LENGTH_SHORT).show();
break;
case R.id.btn_query:
editText.setText("");
Result="";
db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("student", null, null, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
int id=cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String password = cursor.getString(cursor.getColumnIndex("password"));
Result = Result +"id "+id+ "姓名 " + name + " " + "密碼 " + password +"\n";
} while (cursor.moveToNext());
}
cursor.close();
editText.setText(Result);
break;
case R.id.btn_insert:
db = dbHelper.getReadableDatabase();
ContentValues values = new ContentValues();
values.put("name", "ming");
values.put("password", "ming");
db.insert("student", null, values);
values.clear();
values.put("name", "fang");
values.put("password", "fang");
db.insert("student", null, values);
Toast.makeText(this,"數據已插入",Toast.LENGTH_SHORT).show();
break;
case R.id.btn_delete:
db = dbHelper.getReadableDatabase();
db.delete("student", "name=?", new String[]{"ming"});
Toast.makeText(this,"數據已刪除",Toast.LENGTH_SHORT).show();
break;
case R.id.btn_update:
db = dbHelper.getReadableDatabase();
ContentValues values1 = new ContentValues();
values1.put("password", "hello");
db.update("student", values1, "name=?", new String[]{"fang"});
Toast.makeText(this,"數據已更新",Toast.LENGTH_SHORT).show();
break;
}
}
-
創建數據庫
創建數據庫 -
升級數據庫
升級數據庫 -
刪除數據庫
刪除數據庫 -
插入數據
插入數據 -
查詢數據
查詢數據 -
刪除數據
刪除數據后查詢 -
更新數據
更新數據后查詢