SQLite+Unity

SQLite作为本地数据库,其实在现在已经不太流行了,现在游戏数据都是由服务器派发的,但是SQLite在存档的时候,也适用

一、什么是SQLite?

1.SQLite是一款轻型的针对本地化存储的数据库(native database),它是一种关系型数据库管理系统。

2.SQLite的底层由C语言函数库组成,以嵌入式作为设计目标,在占用资源非常少的情况下实现强大的数据库级的数据存储。

3.SQLite支持Windows/Linux/Unix/Android/IOS等等主流的操作系统,同时能够使用我们熟悉的C、C++、Ruby、Python、C#、PHP、Java等主流编程语言来编写其代码。

4.SQLite是一个以文件形式存在的关系型数据库,作为一个轻量级的嵌入式数据库,它不需要系统提供服务支持,通过SDK直接操作文件就可以了使用了。

 

二、SQLite的优势

相比较当今主流的数据库存储引擎诸如Oracle、MySQL、SQLServer、DB2、NoSQL、MongoDB等等,SQLite有如下明显的优势:

1.ACID事务

,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性。

2.零配置,即无需安装和管理配置

3.储存在单一磁盘文件中的一个完整的数据库

4.体积非常小,整个数据库引擎大小大致只有4M多

5.读写效率很高,比大型数据库要快很多

6.独立,没有额外依赖

7.项目源码完全的开源, 你可以将其用于任何商业用途, 包括出售它

8.支持现今所有主流开发语言,如C、C++、PHP、Java、C#、Python等

 

 

三、在Unity中使用SQLite

在Unity3D中,SQLite中的功能是以sqlite3.dll即动态链接库的形式提供,因此我们需要将这个文件放置在项目目录下的Plugins文件夹中,另外我们需要System.Data.dll以及Mono.Data.Sqlite.dll这两个文件,将它们也添加到项目的Plugins目录中,因为我们需要的部分数据相关的API或者类都定义在这两个文件当中。

我们使用SQLite需要依赖的三个动态库文件的具体位置如下:

1.sqlite3.dll         (SQLite的功能)->官网下载(https://www.sqlite.org/download.html),注意下载64位的不要下载32位的

2.Mono.Data.Sqlite.dll->Unity安装根目录\Editor\Data\Mono\lib\mono\2.0\Mono.Data.Sqlite.dll

3.System.Data.dll->Unity安装根目录\Editor\Data\Mono\lib\mono\2.0\System.Data.dll

 

四、使用SQLite数据库读写的基本流程:

1.定义数据库连接字符串(ConnectionString)完成数据库连接的构造,建立或者打开一个数据库。(连接字符串ConnectionString = "data source=" + Application.dataPath + "/" + dbName + ".db";

2.定义相关的SQL命令(Command)通过这些命令实现对数据库的增加、删除、更新、读取四种基本功能。

3.在完成各种数据库操作后及时关闭数据库连接,解除对数据库的连接和引用。

 

五、SQLite基本语法

1.SQLite注释

SQLite注释是附加的注释,可以在SQLite代码中添加注释以增加其可读性,他们可以出现在任何空白处,包括在表达式内和其他SQL语句的中间,但它们不能嵌套。

SQL注释以两个连续的"-"字符开始,直至下一个换行符或直到输入结束

也可以使用C风格的注释,以"/*"开始,直至下一个"*/"字符或直到输入结束

 

2.SQLite语句

所有的SQLite语句可以以任何关键字开始,如SELECT、INSERT、UPDATE、DELETE、ALTER、DROP等,所有的语句以分号(;)结束。

 

3.SQLite数据类型

SQLite数据类型是一个用来指定任何对象的数据类型的属性。SQLite中的每一列,每个变量和表达式都有相关的数据类型。我们可以在创建表的同时使用这些数据类型。

SQLite中的数据类型有以下几种:

(1)NULL,值是一个 NULL 值。

(2)INTEGER,值是一个带符号的整数,根据值的大小存储在1、2、3、4、6或8字节中。

(3)REAL,值是一个浮点值,存储为8字节的IEEE浮点数字。

(4)TEXT,值是一个文本字符串,使用UTF-8或UTF-16存储。

(5)BLOB,值是一个blob数据,完全根据它的输入存储。

特别需要注意的数据类型:

Bool数据类型

SQLite没有单独的Bool类型。使用整数0(false)和 1(true)来代替bool值。

Date与Time数据类型

SQLite没有单独的日期或时间类型,可以使用TEXT、REAL或 INTEGER来代替。

TEXT表示时间,格式为"YYYY-MM-DD HH:MM:SS.SSS"的日期。

REAL表示时间,从公元前4714年11月24日格林尼治时间的正午开始算起的天数。

INTEGER表示时间,从1970-01-01 00:00:00UTC算起的秒数。

 

4.SQLite创建表

SQLite的CREATE TABLE语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类型。

CREATE TABLE语句的基本语法如下:

CREATE TABLE database_name.table_name(

   column1 datatype  PRIMARY KEY(one or more columns),

   column2 datatype,

   column3 datatype,

   .....

   columnN datatype,

);

CREATE TABLE是告诉数据库系统创建一个新表的关键字。CREATE TABLE语句后跟着表的唯一的名称或标识。

实例

下面是一个实例,它创建了一个Item表,ID作为主键,NOT NULL的约束表示在表中创建纪录时这些字段不能为NULL:

CREATE TABLE COMPANY(

   ID                   INT           PRIMARY KEY     NOT NULL,

   NAME           TEXT    NOT NULL,

   AGE            INT     NOT NULL,

   ADDRESS        CHAR(50),

   SALARY         REAL

);

 

5.SQLite删除表

SQLite的DROP TABLE语句用来删除表定义及其所有相关数据、索引、触发器、约束和该表的权限规范。使用此命令时要特别注意,因为一旦一个表被删除,表中所有信息也将永远丢失。

DROP TABLE语句的基本语法如下。可以选择指定带有表名的数据库名称,如下所示:

DROP TABLE database_name.table_name;

 

6.SQLite插入数据

SQLite的INSERT INTO语句用于向数据库的某个表中添加新的数据行。

INSERT INTO 语句基本语法,如下所示:

INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)] 

VALUES (value1, value2, value3,...valueN);

在这里,column1, column2,...columnN 是要插入数据的表中的列的名称。

如果要为表中的所有列添加值,也可以不指定列名称。即变为如下形式:

INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

 

7.SQLite查询语句

SQLite的SELECT语句用于从SQLite数据库表中获取数据,以结果表的形式返回数据。这些结果表也被称为结果集。

SQLite的SELECT语句的基本语法如下:

SELECT column1, column2, columnN FROM table_name;

在这里,column1, column2...是表的字段,他们的值是我们想要获取的。如果您想获取所有字段的值,使用如下形式:

SELECT * FROM table_name;

 

8.SQLite条件子句

SQLite的WHERE子句用于指定从一个表或多个表中获取数据的条件。

如果满足给定的条件,即为真(true)时,则从表中返回特定的值。WHERE子句来过滤记录,只获取需要的记录。

WHERE子句不仅可用在SELECT语句中,也可用在UPDATE、DELETE语句中。

SQLite的带有WHERE子句的SELECT语句的基本语法如下:

SELECT column1, column2, columnN

FROM table_name

WHERE [condition]

AND运算符允许在一个SQL语句的WHERE子句中的多个条件的存在。使用AND运算符时,只有当所有条件都为真(true)时,整个条件为真(true)。

OR运算符也用于结合一个SQL语句的WHERE子句中的多个条件。使用OR运算符时,只要当条件中任何一个为真(true)时,整个条件为真(true)。

 

9.SQLite更新语句

SQLite的UPDATE查询用于修改表中已有的记录。可以使用带有WHERE子句的UPDATE查询来更新选定行,否则所有的行都会被更新。

带有WHERE子句的UPDATE查询的基本语法如下:

UPDATE table_name

SET column1 = value1, column2 = value2...., columnN = valueN

WHERE [condition];

我们可以使用AND或OR运算符来结合N个数量的条件。

 

10.SQLite删除语句

SQLite的DELETE语句用于删除表中已有的记录。可以使用带有WHERE子句的DELETE查询来删除选定行,否则所有的记录都会被删除。

带有WHERE子句的DELETE查询的基本语法如下:

DELETE FROM table_name

WHERE [condition];

我们可以使用AND或OR运算符来结合N个数量的条件。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值