SQLite数据库的使用

  • 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)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注