SQLite 是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着您不需要在系统中配置,就可以使用。
特点
不需要一个单独的服务器进程或操作的系统(无服务器的)。
SQLite 不需要配置,这意味着不需要安装或管理。
一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
SQLite 是自给自足的,这意味着不需要任何外部的依赖。
SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
Unity中使用
using System;
using System.Collections.Generic;
using UnityEngine;
using Mono.Data.Sqlite;
/// <summary>
/// 数据库管理器
/// </summary>
public class DBManager :MonoBehaviour{
private static DBManager _instance;
public static DBManager Instance
{
get
{
if (_instance == null)
{
GameObject go = new GameObject("DBManger");
_instance = go.AddComponent<DBManager>();
}
return _instance;
}
}
//用于建立数据库连接,保证数据流
SqliteConnection connection;
//数据库命令
SqliteCommand command;
//数据库阅读器
SqliteDataReader reader;
private const string dbName = "data";
void Awake()
{
InitDB();
OpenDB();
}
void OnDestroy()
{
CloseDB();
}
//拷贝数据库到沙盒目录
void InitDB()
{
Debug.Log("*-> DBManager->Init");
//判断是移动端
if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer)
{
string systemDBPath = Application.persistentDataPath + "/data.db";
// copy data.db from steamingAssetsPath to persistentDataPath
if (!System.IO.File.Exists(systemDBPath))
{
CopyFileFromStreamingAssetsToPersistentDataPath("