当前位置:网站首页>Unity 使用Sqlite
Unity 使用Sqlite
2022-07-01 05:22:00 【zLulus】
我看网上都在讲引用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
下即可执行
如果觉得有不合适的地方,可以自己再封装一层~
边栏推荐
- AcWing 885. Find the combination number I (recursive preprocessing)
- Global and Chinese markets of superconductor 2022-2028: Research Report on technology, participants, trends, market size and share
- El cascade echo failed; El cascader does not echo
- Explanation of characteristics of hydraulic slip ring
- Txncoordsender of cockroachdb distributed transaction source code analysis
- Global and Chinese market of mainboard 2022-2028: Research Report on technology, participants, trends, market size and share
- Vmware workstation network card settings and three common network modes
- 担心侵权?必备无版权素材网站分享,不用担心视频剪辑缺素材
- [RootersCTF2019]babyWeb
- Go learning notes (5) basic types and declarations (4)
猜你喜欢
TypeORM 框架
Daily question -leetcode1175- permutation of prime numbers - Mathematics
了解 JVM 中几个相关问题 — JVM 内存布局、类加载机制、垃圾回收
[NLP Li Hongyi] notes
Use and principle of wait notify
基于TI DRV8424驱动步进电机实现调速和行程控制
Application of industrial conductive slip ring
Copy baby prompt: material cannot be empty. How to solve it?
Software intelligence: the "world" and "boundary" of AI sentient beings in AAAs system
busybox生成的东西
随机推荐
Explanation of characteristics of hydraulic slip ring
Some common commands of podman
QT waiting box production
Lock free concurrency of JUC (leguan lock)
云原生存储解决方案Rook-Ceph与Rainbond结合的实践
Detailed explanation of set
如何选择导电滑环材料
Set set detailed explanation
el-form表单新增表单项动态校验;el-form校验动态表单v-if不生效;
Thread safety issues
AcWing 887. Finding combinatorial number III (Lucas theorem)
How to create a progress bar that changes color according to progress
轻松上手Fluentd,结合 Rainbond 插件市场,日志收集更快捷
Flowable source code comment (XXXIX) task listener
Detailed explanation of distributed global unique ID solution
Distributed - summary list
AcWing 885. Find the combination number I (recursive preprocessing)
[data recovery in North Asia] a data recovery case of raid crash caused by hard disk drop during data synchronization of hot spare disk of RAID5 disk array
AcWing 889. 01 sequence satisfying the condition (Cartland number)
Global and Chinese markets of gps/gnss receiver modules 2022-2028: Research Report on technology, participants, trends, market size and share