我正在Unity
制作一个小游戏,我需要一个数据库。我尝试使用SQLite
数据库,因为这似乎是网络推荐的。
现在我遇到了通过c#实际连接到本地数据库的麻烦。
我在SQLite .dll中实现了数据。 我试图从我使用SQLite开发人员创建的数据库中获取1个名称。
下面是我的DataConnection
类,我用它来连接数据库。
using UnityEngine;
using System.Collections;
using System.Data;
using Mono.Data.SqliteClient;
public class Dataconnection : MonoBehaviour {
private string _constr = @"Data Source=C:\Program Files (x86)\SharpPlus\SqliteDev\GameDatabase.db;Version=3;";
private IDbConnection _dbc;
private IDbCommand _dbcm;
private IDataReader _dbr;
public Dataconnection()
{
}
public Dataconnection(string constring)
{
_constr = constring;
}
public string ExcecuteQuery(string SQL)
{
string output = "";
try
{
_dbc = new SqliteConnection(_constr);
_dbc.Open();
_dbcm = _dbc.CreateCommand();
_dbcm.CommandText = SQL;
_dbr = _dbcm.ExecuteReader();
}
catch
{
}
while (_dbr.Read())
{
output = _dbr.GetString(0);
}
_dbc.Close();
return output;
}
}
然后我从另一个类调用以下方法:
datacon.ExcecuteQuery("SELECT name FROM employee WHERE empid = 1;");
运行代码时出现以下错误:
所以我猜它与32/64位不匹配有关,或者创建这样的脚本实例有什么问题?:
private Dataconnection datacon;
void Start()
{
datacon = new Dataconnection();
}
很高兴得到任何帮助。我熟悉使用数据库,这只是SQLite的新手。
答案 0 :(得分:1)
它说它无法加载本机sqlite.dll,因为你有64位版本它需要32位
将其放在您的应用文件夹https://www.sqlite.org/2015/sqlite-dll-win32-x86-3081001.zip
中请在第38行填空;
因为隐藏了一个异常,这是空引用的真正原因。
你也可以发布你的连接字符串,这样我就能更好地回答这个问题。
答案 1 :(得分:0)
我现在就开始工作了。问题是我的一个SQLite .dll仍然是32位。我再次做了this教程并在谷歌搜索64位.dll文件,现在它正在运行。