赞
踩
Unity版本 Unity 2020.3.26f1c1
VS版本 Visual Studio 2019
下载好dll扩展文件和SQLiteScript文件夹后,
先把Mono.Data 和Mono.Data.Sqlite 和sqlite3 和 libsqlite3 放到 Assets/Plugins文件夹中
并且把SQLiteScript文件夹也拖拽到Assets当中
如下图
Getdb方法实现 注意:SQLiteHelper填写的数据库路径一定是要在StreamingAssets文件当中 路径不需要写.db文件名后缀
如下图
private void Getdb(Action<DbAccess> action) { //Path数据库文件,一定是StreamingAssets文件夹下 填写的路径文件不需要填写.db后缀 //创建数据库读取类 SQLiteHelper helper = new SQLiteHelper(Path); //打开数据库 存储数据库操作类 using (var db = helper.Open()) { //调用数据库委托 action(db); } /* 因为每次使用数据 添/删/改/查 都需要使用完后Close掉 重复代码,写无数次太麻烦 因为数据库操作类 继承了IDisposable接口 所以, using会自动关闭数据库连接,我们无需手动关闭数据库 */ }
如果不使用using块套住数据库操作类 需要手动 打开 和关闭数据库
private void Getdb2(Action<DbAccess> action)
{
//创建数据库读取类
SQLiteHelper helper = new SQLiteHelper(Path);
//打开数据库 存储数据库操作类
var db = helper.Open();
//调用数据库委托
action(db);
//关闭数据库
db.CloseSqlConnection();
}
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 代码如下
//创建一个表方法 创建表名UserInfo
//字段名称 UID 类型为 INTEGER
// User Password 类型为STRING
//将LoginTime 类型 设置为DATETIME
Getdb(db => db.CreateTable("UserInfo", new[] {
"UID", "User", "Password", "LoginTime" },
new[] {
"INTEGER", "STRING", "STRING", "DATETIME" }));
需求给对应字段插入数据 分别为 5201314 imdork 142536 当前本地时间 代码如下
//插入字段为 UID / User/ Password / LoginTime
//对应数据 5201314 imdork 142536 本地时间
//生成时间字符串代码:
//DateTime.Now.ToString("s")
Getdb(db => db.InsertIntoSpecific("UserInfo", new[] {
"UID", "User", "Password","LoginTime" }
, new [] {
"5201314", "imdork", "142536", DateTime.Now.ToString("s") }));
需求查询数据UID 大于50 对应User 字段的数据 和LoginTime 时间对应数据 代码如下:
//调用Getdb方法 Getdb(db => { //查询该账号UID 大于50 对应的 LoginTime 和 User 对应字段数据 var reader = db.SelectWhere("UserInfo", new[] { "User","LoginTime" }, new[] { "UID" }, new[] { ">" }, new[] { "50" }); //调用SQLite工具 解析对应数据 Dictionary<string, object> pairs = SQLiteTools.GetValue(reader); //获取User字段 对应数据 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方法 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); } } });
最后控制台输出结果如下:
注意:使用SQLiteTools类 来解析数据时
解析单行数据 用GetValue方法 ,解析多行数据就要使用 GetValues方法
还有查询bool只能使用以下办法如下方代码
//查询全部数据
var reader = db.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。