【问题标题】:Unity SQLite local databaseUnity SQLite 本地数据库
【发布时间】:2016-08-10 15:57:18
【问题描述】:

我正在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。

【问题讨论】:

    标签: c# android database sqlite unity3d


    【解决方案1】:

    它说它无法加载本机 sqlite.dll,因为你有 64 位版本,它需要 32 位

    把它放在你的应用文件夹https://www.sqlite.org/2015/sqlite-dll-win32-x86-3081001.zip

    请用 throw 填满第 38 行的空捕获;

    因为那里隐藏了一个异常,这是空引用的真正原因。

    您也可以发布您的连接字符串,以便我可以更好地回答这个问题。

    【讨论】:

    • 谢谢,解决了 1 个错误,现在我仍然有 NullReferenceException 错误。知道如何解决吗?
    • 连接字符串:@"Data Source=C:\Program Files (x86)\SharpPlus\SqliteDev\GameDatabase.db;Version=3;";
    • 你是对的,异常给了我“不正确的连接字符串”。我的 con 字符串一定有问题。顺便说一句,它在我的 dataconnection.cs 中。
    • 我将数据库移动到 \documents\ 和相应的连接,但它似乎仍然无法正常工作。
    • 我查了一下,还是一样。我不断收到 NullReference 异常错误。
    【解决方案2】:

    我现在开始工作了。问题是我的 SQLite .dll 之一仍然是 32 位的。我又做了this 教程,并在谷歌上搜索了 64 位 .dll 文件,现在它可以工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-18
      • 2011-07-11
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多