👨💻个人主页:@元宇宙-秩沅
👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
👨💻 本文由 秩沅 原创
👨💻 专栏交流 | 🧧 |
---|---|
🟥Unity100个实战基础✨ | 🎁 |
🟦 Unity100个精华一记✨ | 🎁 |
🟩 Unity50个demo案例教程✨ | 🎁 |
🟨 Unity100个精华细节BUG✨ | 🎁 |
文章目录
- ⭐前言⭐
- 🎶(==1==) window环境配置
- 🎶(==2==) SqLite语法
- (1) CREATE TABLE : 用来创建一个关系表
- (2)DROP TABLE: 删除一个表
- (3)ALTER TABLE : 修改表结构
- (4)INSERT INTO : 往表中插入数据
- (5) 修改表内的数据
- (6)DELETE FROM 删除表中所有的数据
- (7)SELECT 数据查询
- (8)高级查询
- 🎶(==3==) SqLite在Unity中的使用
- 🎶(==4==) SqLiteConroller管理器类封装
- ⭐🅰️系统路线学习点击跳转⭐
⭐前言⭐
SQLite数据库是一种轻量级的嵌入式数据库系统,它用于存储和管理数据。在Unity游戏开发中,SQLite数据库可以用来存储游戏中的各种数据,例如玩家的角色信息、游戏进度、成就、排行榜等。
SQLite数据库在Unity中的作用如下:
-
存储游戏数据:SQLite数据库可以用来存储游戏中的各种数据,例如道具信息、任务进度、玩家设置等。通过SQLite数据库,游戏可以方便地保存和读取这些数据。
-
数据持久化:SQLite数据库可以用来实现数据的持久化,即使游戏退出或重启,数据仍然可以保存在数据库中,下次打开游戏时可以重新加载。
-
离线模式:SQLite数据库可以用来支持游戏的离线模式,即在没有网络连接的情况下,游戏可以从SQLite数据库中读取数据,进行游戏。
-
数据查询和更新:SQLite数据库提供了强大的查询和更新功能,游戏可以通过SQL语句进行数据的查询和更新操作,例如按条件查询玩家成绩排行榜、更新玩家金币数量等。
-
数据同步:如果游戏需要与服务器进行数据同步,SQLite数据库可以用来缓存服务器数据,减少对服务器的频繁访问,提高游戏性能。
SQLite数据库在Unity游戏中扮演了存储和管理游戏数据的重要角色,它为游戏提供了数据持久化、离线模式、查询和更新操作等功能,方便开发者管理和使用游戏中的各种数据。
MySQL 和SQLserve一般针对服务器中的数据
SqLite则大多用做客户端中的数据
MySQL 和SQLserve一般针对服务器中的数据
SqLite则大多用做客户端中的数据
🎶(1) window环境配置
sqLite下载通道
- 下载好之后将路径复制在,设置中系统环境变量——系统变量的Path里,新建然后路径复制进去,一直确定
打开窗口,输入sqlite3即可查看版本是否安装成功
Windows命令窗口常见的指令如下:
- dir:列出当前目录下的文件和子目录。
- cd:改变当前目录。
- mkdir:创建新的目录。
- rmdir:删除指定的目录。
- copy:复制文件。
- del:删除文件。
- ren:重命名文件。
- type:显示文件的内容。
- move:移动文件或目录。
- attrib:更改文件或目录的属性。
- chkdsk:检查磁盘上的错误。
- ping:测试网络连接。
- ipconfig:显示或修改网络设置。
- netstat:显示网络连接和端口信息。
- tasklist:列出当前正在运行的进程。
- taskkill:终止指定的进程。
- shutdown:关闭或重启计算机。
- help:显示命令窗口的帮助信息。
这只是一些常见的指令,Windows命令窗口还有很多其他指令可供使用。您可以在命令窗口中输入"help"命令获取所有可用指令的列表和详细说明。
🎶(2) SqLite语法
为什么轻量,因为它是以文件的形式存储所有的数据
-
外键:可与其他表格中的键进行关联
-
唯一键:不可以重复,可以为空,一个表可以有多个
-
主键:不可以重复,不可以为空,一个表里只有一个,自增
-
打开或新建一个Sqlite文件
splite3 文件名.splite -
看一下当前有哪些表
.table
(1) CREATE TABLE : 用来创建一个关系表
语法:CREATE TABLE 表名(列名1 数据类型 “约束”(有可无)列名2 数据类型 “约束”(有可无)列名3 数据类型 “约束”(有可无)...);//注意,SQL语句要以分号结尾
数据类型:integer(size) 仅容纳整数,size规定数字的最大位数int(size)int decimal(size,d);容纳带小数的数字size 规定带数字的最大位数,d规定小数点右侧的最大位数real 实型char(size) 固定长度的字符串,size规定字符串的长度varchar(size) 可变长度的字符串,size规定字符串的最大字符数text 文本null 空date 日期2020/09/022020-09-02blob:二进制...
约束:not null 不为空unique 唯一primary key 主键 (主键渐必须是唯一且不为空)primary key autoincrement 主键自增default 默认eg: default "China"check 用于限制列中值的范围eg: check score >= 0 and score <= 100
(2)DROP TABLE: 删除一个表
语法:DROP TABLE 表名;
(3)ALTER TABLE : 修改表结构
重命名:ALTER TABLE 旧表名 rename to 新表名;
增加一列:ALTER TABLE 表名 add column 列名 数据类型
(4)INSERT INTO : 往表中插入数据
语法:INSERT INTO 表名 VALUES(值1,值2,值3...);//给所有的列插入数据,有多少列就要填多少值。INSERT INTO 表名 VALUE(列名1,列名2,....) VALUE (值1,值2,... );//给指定列插入数据
(5) 修改表内的数据
UPDATE 表名 set 列名 = 新值,...;
UPDATE 表名 set 列名 = 新值,...WHERE 条件;//条件用来定位要修改的某些行
条件:列名 运算符 值运算符: = != > >= <=如果有多个条件,可以用and和or连接
eg:update stu set age = 21;update stu set age = 30 where num = 1001;update stu set age = 30 where num > 60 and num < 999;
(6)DELETE FROM 删除表中所有的数据
DELETE FROM 表名;//删除表中所有的数据
DELETE FROM 表名 WHERE 条件;//删除满足条件数据eg:delete from stu;delete from stu where num = 1003;
(7)SELECT 数据查询
语法:SELECT 列名1,...FROM 表名;SELECT *FROM 表名;//查询整个表的数据SELECT *FROM 表名 where 条件;//查询整个表的数据eg:insert into stu1(stu_num,stu_name,age,,addr) select stu_num,stu_name,age,addr from stu;//从stu表中插入数据,然后插入到stu1表中
(8)高级查询
模糊查询列名 like 通配符 (_%)_: 匹配单个字符&:匹配任意单个字符eg:select *from stu where name like 'wang_';select *from stu where name like '%wang%'
排序:按指定的列名进行排序order by 列名 asc/desc;//asc:升序 desc:降序eg:select *from stu order by age desc;//根据年龄降序排序限制记录条数limit 数字eg:select *from stu limit 2;//查看表中的前两条记录排序+限制eg:select *from stu order by age desc limit 1;//查看年龄最大的记录聚合函数cout(列*名) //统计记录数量sum(列名) //计算给定列的总和avg(列名) //计算给定列的平均值min(列名) //计算给定列的最小值max(列名) //计算给定列*的最大值eg:select cout(*) from stu;select max(age)-min(age) from stu;别名eg:select num AS 学号,name AS 姓名 from stu;分组:group byeg:select age,cout(*) from stu group by age;//查询每个年龄的人数范围查询:between ... and ...eg: select *from stu where age between 10 and 20;去重:distincteg:select distinct age from stu;子查询:in(值,...)in(select ...)eg:select *from stu where age in (18,20,25);select *from stu where age in (select age from stu where age < 30); ★★★★★★多表联接select 列名,... 表1,表2,...where 条件select 列名,... form 表1 join 表2 on 联接条件 ... where 过滤条件;eg:学生表: 学号 姓名 年龄 班级 学校 ...create table t_stu(num int primary key, name text,age int,class int school int);intsrt into t_stu values(1001,'wb1',18,100101,2001);insert into t_stu values(1002,'wb2',19,100101,2001);insert into t_stu values(1003.'wb3',20,100101,2002);学校表:编号 校名 电话 地址...create table t_school(num int primary key,name text, tel text,addr text);insert into t_school values(2001,'first',010-123456,'changsha');insert into t_school values(2002,'second',010-0101011,'shanghai');需求:查询学生的学号,姓名,学校名select t_stu.num,t_stu.name,t_school,name from t_stu,t_school);===》学生表中的每一行都与学校表中的每一行进行联结,结果称之为 笛卡尔积此时,需要指明两个表联结条件,在上述表中,联结条件是 学校的编号相同两种联结写法:第一种: select t_stu,num, t_stu.name,t_school.name from t_stu,t_school where t_stu.school = t_school.num;第二种:select t_stu.num,t_stu.name,t_school.name from t_stu join t_school on t_stu.school = t_school.num;select t_stu.num,t_stu.name,t_school.name from t_stu join t_school on t_stu.school = t_school.num where t_stu.num = 1002;
🎶(3) SqLite在Unity中的使用
-
首先点开下列路径,找到选中的两个dll文件
-
把它拖到Plugins文件下面
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mono.Data.Sqlite;
using System;//-------------------------------
//-------功能: sqlist持久化模板
//-------创建者: -------
//------------------------------public class SpliteContorller : MonoBehaviour
{void Start(){SqliteConnection sqliteConnnet = new SqliteConnection("Data Source" + Application.dataPath + "/Data/text/sqlist");sqliteConnnet.Open(); //打开数据库//---------------------------------------------//-------------增删改的语句模板------------------//---------------------------------------------//创建表的语句String sql = "sqlist语句";//创建sqlist命令SqliteCommand sqliteCommand = new SqliteCommand (sql , sqliteConnnet);//执行命令sqliteCommand.ExecuteNonQuery ();//执行后需要销毁sqliteCommand.Dispose ();//---------------------------------------//-------------查询语句模板---------------//---------------------------------------//-------------单个结果查询---------------sql = "查询语句";sqliteCommand = new SqliteCommand (sql ,sqliteConnnet);//装载获取的结果object obj = sqliteCommand.ExecuteScalar ();Debug.Log( Convert.ToInt32(obj) );sqliteCommand.Dispose();//-------------多个结果查询---------------sql = "查询语句";sqliteCommand = new SqliteCommand(sql, sqliteConnnet);//装载获取的结果SqliteDataReader reader = sqliteCommand.ExecuteReader ();//读取while ( reader.Read() ){//如int id = reader.GetInt32(0); //获取每一列的对象}sqliteCommand.Dispose();reader.Close();sqliteConnnet.Close();//关闭数据库}
}
🎶(4) SqLiteConroller管理器类封装
- 简单封装
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mono.Data.Sqlite;
using System;
using Unity.VisualScripting.Dependencies.Sqlite;//-------------------------------
//-------功能: sqlist管理器(单例)
//-------创建者: -------
//------------------------------public class SpliteContorller : MonoBehaviour
{//-------单例模式的封装-------------private static SpliteContorller instance;public static SpliteContorller Instance => instance ;private SqliteConnection con; //sqlist连接类private SqliteCommand Command; //sqlist命令类private void Awake(){instance = this ;}/// <summary>/// 打开数据库/// </summary>/// <param name="file"></param>public void Open( string file){con = new SqliteConnection("Data Source" + Application.dataPath + file);}/// <summary>/// 执行命令/// </summary>/// <param name="sqlStr">sqlist语句</param>public void ExecuteNonQuery( string sqlStr){//创建sqlist命令Command = new SqliteCommand(sql, con);//执行命令Command.ExecuteNonQuery();//执行后需要销毁Command.Dispose();}/// <summary>/// 执行单个查询/// </summary>/// <param name="sqlStr">sqlist语句</param>/// <returns></returns>public object ExecuteScalar( string sqlStr ){Command = new SqliteCommand(sqlStr, con);//装载获取的结果object obj = Command.ExecuteScalar();Command.Dispose();return obj;}/// <summary>/// 执行单个查询/// </summary>/// <param name="sqlStr">sqlist语句</param>/// <returns></returns>public SqliteDataReader ExecuteQuery(string sqlStr){Command = new SqliteCommand(sqlStr, con);//装载获取的结果SqliteDataReader reader = Command.ExecuteReader();Command.Dispose();return reader; //记得在外面关闭 reader.Close();//还可继续封装}/// <summary>/// 关闭数据库/// </summary>public void OnDestroy(){con.Close();//关闭数据库}}
⭐🅰️系统路线学习点击跳转⭐
👨💻 Unity程序基础学习路线 | 🧧 |
---|---|
⭐【Unityc#专题篇】之c#进阶篇】 | 🎁 |
⭐【Unityc#专题篇】之c#核心篇】 | 🎁 |
⭐【Unityc#专题篇】之c#基础篇】 | 🎁 |
⭐【Unity-c#专题篇】之c#入门篇】 | 🎁 |
⭐【Unityc#专题篇】—进阶章题单实践练习 | 🎁 |
⭐【Unityc#专题篇】—基础章题单实践练习 | 🎁 |
⭐【Unityc#专题篇】—核心章题单实践练习 | 🎁 |
你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!、