当前位置:网站首页>Unity 使用Sqlite
Unity 使用Sqlite
2022-07-01 21:39:00 【游戏编程】
我看网上都在讲引用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 下即可执行
如果觉得有不合适的地方,可以自己再封装一层~
作者:zLulus
游戏编程,一个游戏开发收藏夹~
如果图片长时间未显示,请使用Chrome内核浏览器。
边栏推荐
猜你喜欢

Slf4j打印异常的堆栈信息

News classification based on LSTM model

GCC编译

名单揭晓 | 2021年度中国杰出知识产权服务团队

收到一封CTO来信,邀约面试机器学习工程师

【Leetcode】最大连续1的个数

九章云极DataCanvas公司蝉联中国机器学习平台市场TOP 3

"The silk road is in its youth and looks at Fujian" is in the hot collection of works in the Fujian foreign youth short video competition

考虑关系的图卷积神经网络R-GCN的一些理解以及DGL官方代码的一些讲解

工控设备安全加密的意义和措施
随机推荐
cmake工程化相关
MySQL系列之事务日志Redo log学习笔记
Do you want to make up for the suspended examination in the first half of the year? Including ten examinations for supervision engineers, architects, etc
Flume面试题
NIO与传统IO的区别
Significance and measures of security encryption of industrial control equipment
【商业终端仿真解决方案】上海道宁为您带来Georgia介绍、试用、教程
One of the basic learning of function
测试撤销1
Talking from mlperf: how to lead the next wave of AI accelerator
AirServer2022最新版功能介绍及下载
CNN卷积神经网络原理讲解+图片识别应用(附源码)[通俗易懂]
从MLPerf谈起:如何引领AI加速器的下一波浪潮
杰理之、产线装配环节【篇】
MQ学习笔记
Internet of things RFID, etc
2022年高处安装、维护、拆除考题模拟考试平台操作
功利点没啥!
2022熔化焊接与热切割上岗证题目模拟考试平台操作
芭比Q了!新上架的游戏APP,咋分析?