Unity 中使用SQLite数据库

0.参考文章

https://blog.csdn.net/ChinarCSDN/article/details/106049591

1.Presentation —— 介绍

为什么要使用SQLite数据库?

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

2.(SQLite4Unity3d)Unity中直接使用SQLite的插件

下载地址
在这里插入图片描述

遇到的问题:工程里面的sqlite3.dll报错,解决办法:使用sqlite3官网下载的dll
下载地址
在这里插入图片描述

3.创建数据库

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

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

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

4.创建表

数据类:

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>();//创建表
}

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

5.Navicat Premium(数据库可视化)

下载破解教程
使用步骤:
首先点击连接,选择SQLite
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.增删改查

6.1 增

单个增加:
注意: float类型数据精度有所丢失,解决方案就是将float类型的数据转为string类型保存下来,使用的时候再转回float

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

在这里插入图片描述
多个增加:

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
        },
    });
}

在这里插入图片描述

6.2 删

一、查找准确数据删除:

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

在这里插入图片描述
二、删除主键:

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

在这里插入图片描述

6.3 改

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

在这里插入图片描述

6.4 查

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45136016/article/details/141472870