學(xué)習(xí)SQLiteDatabase之前我們需要了解的是:
- SQLiteDatabase其實是可以直接在Activity中代碼創(chuàng)建的
- db文件其實就是一個文件(以單個文件存在)搁宾,當(dāng)找到db文件名路徑的時候渗磅,可以用file的delete方法刪除數(shù)據(jù)庫
- Android的SQLiteDatabase最大可存儲 2TB的數(shù)據(jù)
- db文件默認(rèn)存儲路徑為 /data/data/your.app.package/databases/your-db-name
1.sqlite的sq語句操作
這里對sq語句只做簡單的操作
1.1 創(chuàng)建表
//查詢數(shù)據(jù)庫文件user.db,若文件不存在會自動創(chuàng)建
SQLiteDatabase db = openOrCreateDatabase("user.db", MODE_PRIVATE, null);
String createTable = "CREATE TABLE IF NOT EXISTS user(_id integer NOT NULL PRIMARY KEY AUTOINCREMENT,\n" +
" name text,\n" +
" sex text,\n" +
" age integer);";
//創(chuàng)建表
db.execSQL(createTable);
以上代碼直接在MainActivity中進行就可以著瓶。
1.2 插入單條數(shù)據(jù)
//插入數(shù)據(jù)
String sql1 = "INSERT INTO user(name,sex,age) VALUES ('張三','男',18);";
db.execSQL(sql1);
1.3 查詢表
//表查詢
String sql3 = "SELECT * FROM user;";
Cursor cursor = db.rawQuery(sql3, null);
if (cursor != null) {
while (cursor.moveToNext()) {
int _id=cursor.getInt(cursor.getColumnIndex("_id"));
String name=cursor.getString(cursor.getColumnIndex("name"));
String sex=cursor.getString(cursor.getColumnIndex("sex"));
int age=cursor.getInt(cursor.getColumnIndex("age"));
LogUtil.e(SqliteActivity.class, "====_id=" + _id+" name="+name+" sex="+sex+" age="+age);
}
cursor.close();
}
需要注意的是,每次查詢完后都需要,用來減少資源浪費
cursor.close();
在app退出程序的時候,要關(guān)閉數(shù)據(jù)庫
db.close();
2.sqlite的java語句操作
2.1 創(chuàng)建表
創(chuàng)建語句仍是用sq語句操作
//查詢數(shù)據(jù)庫文件user.db,若文件不存在會自動創(chuàng)建
SQLiteDatabase db = openOrCreateDatabase("user.db", MODE_PRIVATE, null);
String createTable = "CREATE TABLE IF NOT EXISTS user(_id integer NOT NULL PRIMARY KEY AUTOINCREMENT,\n" +
" name text,\n" +
" sex text,\n" +
" age integer);";
//創(chuàng)建表
db.execSQL(createTable);
2.2 插入數(shù)據(jù)
//插入
ContentValues values=new ContentValues();
values.put("name","李四");
values.put("sex","男");
values.put("age","28");
long rowId=db.insert("user",null,values);
繼續(xù)插入數(shù)據(jù)的時候,可以新建一個ContentValues雁仲,也可以將共用之前用的ContentValues,但是要clear琐脏,如下:
values.clear();
values.put("name","李平");
values.put("sex","女");
values.put("age","26");
db.insert("user",null,values);
2.3 更新數(shù)據(jù)
//更新
values.clear();
values.put("sex","男");
//將 _id大于1的人的性別改成男
db.update("user",values,"_id>?",new String[]{"1"});
2.4 刪除數(shù)據(jù)
//刪除所有名字中帶平的人
db.delete("user","name like ?",new String[]{"%平%"});
2.5 查詢數(shù)據(jù)
Cursor cursor=db.query("user",null,"_id>?",new String[]{"0"},null,null,"name");
if (cursor != null) {
//查詢所有字段名
String ColumnNames[]=cursor.getColumnNames();
while (cursor.moveToNext()){
for(String columnName:ColumnNames){
LogUtil.e(SqliteActivity.class, "====value="+cursor.getString(cursor.getColumnIndex(columnName)));
}
}
cursor.close();
}
注意上面查詢后要關(guān)閉cursor
最后在app退出程序的時候攒砖,要關(guān)閉數(shù)據(jù)庫
db.close();
ok,今天關(guān)于Android數(shù)據(jù)庫的使用就降到這里吧,謝謝日裙!