• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Unity 使用Sqlite

武飞扬头像
zLulus
帮助7

我看网上都在讲引用sqlite3.dll,Mono.Data.Sqlite.dll,System.Data.dll,比如Setup Database (SQLite) for Unity
或者第三方的一些导入方式unity-3rdparty-sqlite-net
或者通过第三方包管理工具导入Unity3D 入门:如何管理 Unity 项目中的 NuGet 包?使用第三方 NuGet 包管理器——NuGetForUnity
但我发现Unity有关于Sqlite的库Unity.VisualScripting.Dependencies.Sqlite.SQLiteConnection,资料有Unity.VisualScripting.Dependencies.Sqlite.SQLiteConnection
所以我就简单做了个增删改查的demo,Unity.VisualScripting.Dependencies.Sqlite.SQLiteConnection可以直接使用,可以完成对Sqlite的操作
下面是关键代码
创建表

using (var db = new SQLiteConnection(databasePath, SQLiteOpenFlags.ReadWrite))
{
    var count = db.CreateTable<UserInfo>();
    count = db.CreateTable<RandomEvent>();
}

增加数据

using (var db = new SQLiteConnection(databasePath, SQLiteOpenFlags.ReadWrite))
{
    var count = db.Insert(new UserInfo()
    {
        Name = "test1Name",
        Sex = SexEnum.Woman,
        Birthday = new DateTime(1990, 10, 2)
    }, typeof(UserInfo));
    List<UserInfo> users = new List<UserInfo>();
    users.Add(new UserInfo()
    {
        Name = "test2Name",
        Sex = SexEnum.Man,
        Birthday = new DateTime(2000, 10, 2)
    });
    users.Add(new UserInfo()
    {
        Name = "test3Name",
        Sex = SexEnum.Woman,
        Birthday = new DateTime(2004, 10, 2)
    });
    count = db.InsertAll(users, typeof(UserInfo));
}
学新通

修改数据

using (var db = new SQLiteConnection(databasePath, SQLiteOpenFlags.ReadWrite))
{
    var count = db.Update(new UserInfo()
    {
        Id = 3,
        Name = "test1Name-Update",
        Sex = SexEnum.Woman,
        Birthday = new DateTime(1990, 10, 2)
    }, typeof(UserInfo));
}

删除数据

using (var db = new SQLiteConnection(databasePath, SQLiteOpenFlags.ReadWrite))
{
    string sql = "select Id,Name,Sex,Birthday from UserInfo where Id =3";
    var data = new object[] { "Id", "Name", "Sex", "Birthday" };
    var deleteData = db.Query(new TableMapping(typeof(UserInfo)), sql, data).FirstOrDefault();
    if (deleteData != null)
    {
        var count = db.Delete(deleteData);
    }

    var count2 = db.Delete<UserInfo>(4);
}

查询数据

using (var db = new SQLiteConnection(databasePath, SQLiteOpenFlags.ReadWrite))
{
    string sql = "select Id,Question,[Order] from RandomEvent";
    var data = new object[] { "Id", "Question", "[Order]" };
    var datas = db.Query(new TableMapping(typeof(RandomEvent)), sql, data);

    //enum not work :(
    //var datas2 = db.Find<UserInfo>(user => user.Name.Contains("test"));
    var datas2 = db.Find<RandomEvent>(randomEvent => randomEvent.Question.Contains("q"));

    var data3 = db.Get<UserInfo>(1);
}

数据表需要做声明

[Table(name: nameof(RandomEvent))]
public class RandomEvent
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    public string Question { get; set; }
    public int Order { get; set; }
}
[Table(name: nameof(UserInfo))]
public class UserInfo
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    public string Name { get; set; }
    public SexEnum Sex { get; set; }
    public DateTime Birthday { get; set; }
}

示例代码

TestSqliteScript
打开项目后,在TestSqliteCanvas下即可执行

如果觉得有不合适的地方,可以自己再封装一层~

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfhebkg
系列文章
更多 icon
同类精品
更多 icon
继续加载