简介
演示 SQLite 数据库访问与数据操作。
- SQLite 类库引用。
- 操作类与数据模型。
- 数据操作。
SQLite 类库引用
- 管理 NuGet 包。
- 搜索 sqlite-net-pcl。
- 安装推荐版本。
操作类与数据模型
- 添加 Note.cs 到 Models 文件夹。
- 编辑 Note.cs:
using System;
using SQLite;
namespace AwesomeApp.Models
{
public class Note
{
[PrimaryKey, AutoIncrement]
public int ID {
get; set; }
public string Name {
get; set; }
public string Text {
get; set; }
public DateTime Date {
get; set; }
public string DateString
{
get
{
return Date.ToString();
}
}
}
}
- PrimaryKey 属性标签表示为主键
- AutoIncrement 属性标签表示为自增列
- 添加 NoteDatabase.cs 到 Data 文件夹。
- 编辑 NoteDatabase.cs:
using AwesomeApp.Models;
using SQLite;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace AwesomeApp.Data
{
public class NoteDatabase
{
private readonly SQLiteAsyncConnection _database;
public NoteDatabase(string dbPath)
{
_database = new SQLiteAsyncConnection(dbPath);
_database.CreateTableAsync<Note>().Wait();
}
~NoteDatabase()
{
_database.CloseAsync();
}
public Task<List<Note>> GetNotesAsync()
{
return _database.Table<Note>().ToListAsync();
}
public Task<Note> GetNoteAsync(int id)
{
return _database.Table<Note>()
.Where(i => i.ID == id)
.FirstOrDefaultAsync();
}
public Task<int> SaveNoteAsync(Note note)
{
if (note.ID != 0)
{
return _database.UpdateAsync(note);
}
else
{
return _database.InsertAsync(note);
}
}
public Task<int> DeleteNoteAsync(Note note)
{
return _database.DeleteAsync(note);
}
}
}
- 编辑 App.xaml.cs:
static NoteDatabase database;
public static NoteDatabase Database
{
get
{
if (database == null)
{
database = new NoteDatabase