初学_Android4高级编程-9 SQLite数据库
※SQlite是一个开源轻量级的关系数据库,是Android软件栈的一部分。
·在Android中数据库查询作为Cursor对象返回
Cursor导航函数:
moveToFirst 把游标移动到查询结果的第一行
moveToNext 把游标移动到下一行
moveToPrevious 把游标移动到前一行
getCount 得到结果集中的行数
getColunmIndexOrThrow 返回具有指定名称的列的索引,如果不存在抛出异常
getColunName 返回指定列索引的名称
getColunNames 返回当前Cursor中所有列名的字符串数组
moveToPosition 把游标移动到指定行
getPosition 返回当前游标的位置
·SQLiteOpenhelper是一个抽象类,用来创建、打开和升级数据库的最佳实践模式,通过实现SQLiteOpenhelper,可以隐藏那些勇于决定一个数据库在打开之前是否需要创建或者升级的逻辑
public class SqlHelper extends SQLiteOpenHelper {
private static final String SQL_CREATE_USER = "CREATE TABLE user(_id INTEGER PRIMARY KEY, name TEXT NOT NULL)";
public SqlHelper(Context context) {
super(context, "test.db", null, 1);
}
//当磁盘上不存在数据库,辅助类需要创建一个新数据库时调用
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_USER);
}
//当数据库版本不一致,磁盘上的数据库版本需要升级到当前版本时调用
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS user");
onCreate(db);
}
}
插入一条数据
SQLiteDatabase db = sqlHelper.getWritableDatabase();
String name = et.getText().toString().trim();
ContentValues values = new ContentValues();
values.put("name", name);
db.insert("user", null, values);
db.close();
更新一条数据
SQLiteDatabase db = sqlHelper.getWritableDatabase();
ContentValues updateValues = new ContentValues();
updateValues.put(KEY_GOLD_HOARD_COLUMN,newHoaedValue);
//指定一个where子句来定义那些行应被更新
String where = KEY_ID = "=" + hoardID;
String whereArgs[] = null;
db.update("user",updateValues,where,whereArgs);
删除数据
SQLiteDatabase db = sqlHelper.getWritableDatabase();
db.delete("user", "name=?", new String[]{"张三"});
db.delete("user", null, null);
db.close();
查询数据,Cursor会被初始化到第一个元素的前一个位,while(Cursor.moveToNext())
SQLiteDatabase db = sqlHelper.getReadableDatabase();
//Cursor cursor = db.query("user", null, "name=?", new String[]{"张三"}, null, null, null);
Cursor cursor = db.query("user", null, null, null, null, null, null);
if (cursor.getCount()!=0) {
cursor.moveToFirst();
do {
String str = "id = " + cursor.getString(0).trim() + " ,name = " + cursor.getString(1).trim();
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
} while (cursor.moveToNext());
} else {
Toast.makeText(this, "数据库为空", Toast.LENGTH_SHORT).show();
}
cursor.close();
db.close();
浙公网安备 33010602011771号