Unity2020 使用SQLite(添/删/改/查) (保姆级)
- 资源下载
* - 项目资源
- dll扩展文件
- SQLiteScript文件夹
- 可视化窗口
- 使用可视化窗口
- 存放到Plugins文件夹
- 使用SQLite 数据库(添/删/改/查)
* - SQLite类型列表
- 数据库存储格式
- 创建表
- 插入
- 查询
– - 更改
- 删除
- 发布注意事项
- SQLiteScript文件夹代码展示
* - SQLite数据操作类(DbAccess)
- SQLite访问类(SQLiteHelper)
- SQLite 解析数据工具类 (SQLiteTools)
资源下载
项目资源
Unity版本 Unity 2020.3.26f1c1
VS版本 Visual Studio 2019
dll扩展文件
SQLiteScript文件夹
可视化窗口
使用可视化窗口
; 存放到Plugins文件夹
下载好dll扩展文件和SQLiteScript文件夹后,
先把Mono.Data 和Mono.Data.Sqlite 和sqlite3 和 libsqlite3 放到 Assets/Plugins文件夹中
并且把SQLiteScript文件夹也拖拽到Assets当中
如下图
使用SQLite 数据库(添/删/改/查)
Getdb方法实现 注意:SQLiteHelper填写的数据库路径一定是要在StreamingAssets文件当中 路径不需要写.db文件名后缀
如下图
private void Getdb(Action<DbAccess> action)
{
SQLiteHelper helper = new SQLiteHelper(Path);
using (var db = helper.Open())
{
action(db);
}
}
如果不使用using块套住数据库操作类 需要手动 打开 和关闭数据库
private void Getdb2(Action<DbAccess> action)
{
SQLiteHelper helper = new SQLiteHelper(Path);
var db = helper.Open();
action(db);
db.CloseSqlConnection();
}
SQLite类型列表
SQLite类型转换表 注意:SQLite类型全都是大写
SQLite类型 对应 C#数据类型
TINYINT Byte -->byte
INT Int32 -->int
INTEGER Int64 -->long
SINGLE Single -->float
DECIMAL Decimal -->decimal
BIT Boolean -->bool
BOOLEAN Boolean -->bool
注意:bool类型 只能存储 0-1 到数据库中 (0)false (1) true
DOUBLE Double -->double (首选)
REAL Double -->double
NVARCHAR String -->string
STRING String -->string (首选)
TEXT String -->string 文本字符串,存储使用的编码方式为UTF-8、UTF-16BE、UTF-16LE
TIME DateTime
DATETIME DateTime (首选)
生成时间字符串代码:
DateTime.Now.ToString("s");
数据库存储格式
注意:DataTime 存储数据库的格式:"s"
DateTime.Now.ToString("s");
注意 bool类型存储格式为 0-1
0 代表false 1 代表是true
创建表
需求创建一个表名 为UserInfo
字段名称 UID User Password LoginTime 对应的C#类型 是
long string string DateTime 代码如下
Getdb(db => db.CreateTable("UserInfo", new[] {
"UID", "User", "Password", "LoginTime" },
new[] {
"INTEGER", "STRING", "STRING", "DATETIME" }));
插入
需求给对应字段插入数据 分别为 5201314 imdork 142536 当前本地时间 代码如下
Getdb(db => db.InsertIntoSpecific("UserInfo", new[] {
"UID", "User", "Password","LoginTime" }
, new [] {
"5201314", "imdork", "142536", DateTime.Now.ToString("s") }));
查询
需求查询数据UID 大于50 对应User 字段的数据 和LoginTime 时间对应数据 代码如下:
Getdb(db =>
{
var reader = db.SelectWhere("UserInfo", new[] {
"User","LoginTime" },
new[] {
"UID" }, new[] {
">" }, new[] {
"50" });
Dictionary<string, object> pairs = SQLiteTools.GetValue(reader);
print("User账号是:" + pairs["User"]);
print("LoginTime登录时间是:" + pairs["LoginTime"]);
});
最后打印结果
根据条件查询当行所有字段
Getdb(obj =>
{
var reader = obj.SelectsWhere("UserInfo",
new[] {
"UID", "User" }, new[] {
">", "=" }, new[] {
"50", "imdork" });
var keys = SQLiteTools.GetValue(reader);
foreach (var item in keys)
{
print("数据库字段名为:" + item.Key + " 对应数据值为:" + item.Value);
}
}
);
最后打印
查询数据库全部数据
Getdb(db =>
{
var reader = db.ReadFullTable("UserInfo");
var pairs = SQLiteTools.GetValues(reader);
for (int i = 0; i < pairs.Length; i++)
{
foreach (var item in pairs[i])
{
print("数据库字段名为:" + item.Key + " 对应数据值为:" + item.Value);
}
}
});
最后控制台输出结果如下:
还有查询bool只能使用以下办法如下方代码
var reader = db.ReadFullTable("表名");
while
Original: https://blog.csdn.net/qq_43333567/article/details/125687424
Author: 勤诚勇毅
Title: Unity2020 使用SQLite (添/删/改/查)(保姆级)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/815191/
转载文章受原作者版权保护。转载请注明原作者出处!