- SQLite是Android系统内置的轻量级关系型数据库,不需要单独安装服务。
- 支持标准SQL语法,可以完成增、删、改、查。
- 数据库文件以文件形式存放在App私有目录。
Xamarin.Android原生SQLite使用,不使用第三方ORM库
为了方便操作sqlite数据库,我们可以封装一个类用来操作sqlite
SQLiteOpenHelper:数据库帮助类,用来创建、打开、升级数据库。
using Android.Content;
using Android.Database.Sqlite;
public class MyDbHelper : SQLiteOpenHelper
{
//数据库名、版本号
private const string DbName = "test.db";
private const int DbVersion = 1;
public MyDbHelper(Context context) : base(context, DbName, null, DbVersion)
{
}
//数据库第一次创建时执行,写建表SQL
public override void OnCreate(SQLiteDatabase db)
{
// 创建user表:id主键自增,name文本,age整数
string createSql = @"
CREATE TABLE User(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER
)";
db.ExecSQL(createSql);
}
//版本升级的时候执行
public override void OnUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
//简单处理:删除旧表重建
db.ExecSQL("DROP TABLE IF EXISTS User");
OnCreate(db);
}
}
创建数据库并且插入一条数据
// 在Activity里面调用
MyDbHelper dbHelper = new MyDbHelper(this);
// 获取可读写数据库对象
SQLiteDatabase db = dbHelper.WritableDatabase;
//方式1:执行原生SQL插入
string insertSql = "INSERT INTO User(name,age) VALUES(?,?)";
db.ExecSQL(insertSql, new object[] { "Tom", 22 });
//方式2:ContentValues插入(推荐,防止SQL注入)
Android.Content.ContentValues values = new Android.Content.ContentValues();
values.Put("name", "Jack");
values.Put("age", 25);
//返回新插入行的id
long rowId = db.Insert("User", null, values);
db.Close(); //用完关闭数据库Code language: JavaScript (javascript)
查询数据
SQLiteDatabase readDb = dbHelper.ReadableDatabase;
//查询全部
Android.Database.ICursor cursor = readDb.Query("User", null, null, null, null, null, null);
while(cursor.MoveToNext())
{
int id = cursor.GetInt(cursor.GetColumnIndex("id"));
string name = cursor.GetString(cursor.GetColumnIndex("name"));
int age = cursor.GetInt(cursor.GetColumnIndex("age"));
}
cursor.Close();
readDb.Close();Code language: JavaScript (javascript)
修改、删除
// 修改
ContentValues updateVal = new ContentValues();
updateVal.Put("age",26);
db.Update("User", updateVal, "name=?", new string[]{"Jack"});
// 删除
db.Delete("User","id=?",new string[]{"1"});Code language: JavaScript (javascript)
Previous: 反序列化
Next: sqlite‑net库