请注意博客发布时间及相关内容版本。
前些天奉命研究SqLite,但说实话,以我现在对数据库知识还停留在仅能看懂SQL语句的这种程度,关于怎么连接数据库,以及里面的工作原理是一窍不通的。
所以我只能借助在网络上查找这类知识,比较幸运的是这类内容还是比较多的,雨松之前也写过相关的教程。
但当我按照教程进行实际操作的时候却出现了问题,那些教程多数已经过于久远,虽然大体方向依旧不变,但在细节上的不同是更让人头疼的。
首先要导入相应的SqLite所需DLL,这里我导入了三个DLL和一个DEF文件,分别是
System.Data.dll 836 KB
sqlite3.dll 1713 KB
Mono.Data.Sqlite.dll 166 KB
sqlite3.def 6 KB
这里就要注意了,敲黑板,划重点,这几个DLL有多种版本,我们必须使用可以配套兼容的才可以正常操作SqLite。
我并不知道自己使用的是什么版本,但实测可用,所以我将他们,打包在一起上传上来了,
我之前按照网上几种给的老版的DLL,在连接数据库方法调用后始终拿不到对象,相当郁闷,后来在Unity文件夹下一搜才发现有好多大小或不相同的同名文件,这说明有很多版本的DLL,但网上通常不会说到这个问题,希望能分享一下我在这里卡坑的经验。
将上面的DLL放入Unity的Assets下后,就可以调用SqLite了,调用封装我这里就直接引用雨松的代码,感谢雨松~
(这个对象不继承MonoBehaviour)
using UnityEngine;
using System;
using System.Collections;
using Mono.Data.Sqlite;
public class DBAccess
{
private SqliteConnection m_dbConnection;
private SqliteCommand m_dbCommand;
private SqliteDataReader m_dbReader;
/// <summary>
/// 构造
/// </summary>
/// <param name="dbFilePath">db文件位置</param>
public DBAccess(string dbFilePath)
{
try
{
string t_strConnectionPath = "URI=file:" + Application.dataPath + "/" + dbFilePath;
m_dbConnection = new SqliteConnection(t_strConnectionPath);
m_dbConnection.Open();
Debug.Log("Connected to db");
}
catch (Exception ex)