在Unity工程中使用SQLite数据库

37 篇文章 5 订阅

Chinar blog www.chinar.xin

在Unity工程中使用SQLite数据库


本文提供全流程,中文翻译。

Chinar 的初衷是将一种简单的生活方式带给世人

使有限时间 具备无限可能

Chinar —— 心分享、心创新!

助力快速完成在 Unity 工程中使用SQLite数据库

为初学者节省宝贵的时间,避免采坑!

Chinar 教程效果:



全文高清图片,点击即可放大观看 (很多人竟然不知道)


1

Presentation —— 介绍



一、为什么要使用SQLite数据库?

请查看这里(这是一位叫 秦元培 的博主写的博客),详细的阐述了什么是SQLite以及为什么使用,还附有使用案例

二、有没有一款好用的插件能让我直接在Unity中使用SQLite呢?

当然有!本篇文章就是介绍一个可以在Unity中直接使用SQLite的插件

下载地址

2

Use —— 使用

首先解压下载好的插件包,将SQLite.cs放在工程里,sqlite3.dll放在工程的Plugins文件夹中,没有的话创建一个
在这里插入图片描述
如此,我们就可以在Unity中对SQLite数据库进行操作了


2.1 CreateDatabase —— 创建数据库

首先创建一个脚本,引用SQLite4Unity3d,定义一个数据库连接字段

    /// <summary>
    /// 数据库连接
    /// </summary>
    public SQLiteConnection Connection;

    void Start()
    {
        //参数1.数据库地址,一般放在StreamingAssets文件夹中,2.开启读写和创建数据库权限
        Connection = new SQLiteConnection(Application.streamingAssetsPath+ "/TestDatabase.db",SQLiteOpenFlags.ReadWrite| SQLiteOpenFlags.Create);
    }

在场景中创建一个空物体,将脚本挂载上去点击运行

在工程的StreamingAssets文件夹中就可以看到我们创建出来的数据库
在这里插入图片描述


2.2 CreateTable —— 创建表

如何创建一张表呢?
首先我们要创建一个表的信息类脚本,里面需要包含表里所需的数据
举个例子

using SQLite4Unity3d;

public class TestTable
{
    [PrimaryKey, AutoIncrement] //设置主键 自动增长
    public int    Id     { get; set; }//Id作为主键
    public string Name   { get; set; }
    public int    Age    { get; set; }
    public float  Height { get; set; }
    public float  Weight { get; set; }
    
    /// <summary>
    /// 重写ToString函数,方便控制台打印
    /// </summary>
    /// <returns></returns>
    public override string ToString()
    {
        return string.Format("[Person: Id={0}, Name={1},  Age={2}, Height={3}],Weight={4}]", Id, Name, Age, Height, Weight);
    }
}

然后在我们的控制脚本里创建这个表

void Start()
    {
        Connection = new SQLiteConnection(Application.streamingAssetsPath+ "/TestDatabase.db",SQLiteOpenFlags.ReadWrite| SQLiteOpenFlags.Create);
        Connection.CreateTable<TestTable>();//创建表
    }

运行工程


2.3 ConnectionTable —— 连接表

我们使用Navicat Premium来连接我们的数据库,方便我们查看对表做出的更改

首先点击连接,选择SQLite
在这里插入图片描述
在这里插入图片描述
点击确定连接数据库
在这里插入图片描述


2.4 InsertData —— 增加数据

插件作者封装了几个方法,可以让我们方便的对数据库进行插入操作

单个的数据插入

void InsertData()
    {
        var p = new TestTable
        {
            Id = 1,
            Name = "Chinar",
            Age = 999,
            Height = 180.5f,
            Weight = 140.3f
        };
        Connection.Insert(p);
    }

我们在Start函数中调用一下,运行工程后在表中可以看到新增数据
在这里插入图片描述
可以看到在Weight 列中的数据精度有所丢失,这是数据库本身造成的,

解决方案就是将float类型的数据转为string类型保存下来,使用的时候再转回float

多个数据插入,由于设置了ID为主键并且自增,所以可以不给ID赋值

void InsertData()
    {
        Connection.InsertAll(new[]  //插入一个数组,数组里是多条数据
        {
            new TestTable
            {
                Name = "小明",
                Age = 12,
                Height = 130.3f,
                Weight = 100.2f
            },
            new TestTable
            {
                Name   = "老皮",
                Age    = 12,
                Height = 133f,
                Weight = 96.2f
            },
            new TestTable
            {
                Name   = "狗子",
                Age    = 12,
                Height = 140f,
                Weight = 120.2f
            },
            new TestTable
            {
                Name   = "刚子",
                Age    = 13,
                Height = 135f,
                Weight = 85.6f
            },
            new TestTable
            {
                Name   = "阿豪",
                Age    = 13,
                Height = 123.4f,
                Weight = 99f
            },
        });
    }

运行工程后查看表

在这里插入图片描述


2.5 DeleteData —— 删除数据

下面介绍对表中数据的删除操作

一、查找准确数据删除

//首先查找到名字为小明的那一条数据,然后将其删除
var data = Connection.Table<TestTable>().Where(_ => _.Name == "小明").FirstOrDefault();
Connection.Delete(data);//删除

然后运行工程查看表
在这里插入图片描述
可以看到 “小明” 已经被删除了,也就是ID为2的那一条数据被删掉了

一、删除主键

//删除主键为3的数据
Connection.Delete<TestTable>(3);

在这里插入图片描述
可以看到 “老皮”也被删除了


2.6 UpdateData —— 更新数据

更新数据和删除数据的使用方法一致

先获得数据信息,然后进行更新

//获取到名字为“小明”的数据
var data = Connection.Table<TestTable>().Where(_ => _.Name == "小明").FirstOrDefault();
//更改 Weight 
data.Weight = 200f;
//更新数据
Connection.Update(data);

我们将“小明”的Weight值改为200
在这里插入图片描述
这里注意一下,如果没有设置主键的话会更新失败


2.7 SelectData —— 查找数据

查找数据就简单多了,像刚刚我们获取数据的方法是一种查找,用来查找一条数据

还有另外一种查找,查找多条数据,例如:所有Age为12的数据,打印出名字

var datas = Connection.Table<TestTable>().Where(_=>_.Age == 12);//获取到所有Age为12的数据
foreach (var v in datas)//遍历
{
    Debug.Log(v.Name);
}

结果如下
在这里插入图片描述
以上就是SQLite在Unity中的简单应用,更多功能等你发现


支持

May Be —— 开发者,总有一天要做的事!


拥有自己的服务器,无需再找攻略

Chinar 提供一站式《零》基础教程

使有限时间 具备无限可能!

先点击领取 —— 阿里全产品优惠券 (享受最低优惠)


Chinar 免费服务器、建站教程全攻略!( Chinar Blog )


Chinar

END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com

对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

  • 8
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值