【问题标题】:Cant access the database sqlite in android and windows build, but in unity editor the data base is accessed无法在android和windows构建中访问数据库sqlite,但在统一编辑器中访问数据库
【发布时间】:2016-11-10 06:01:40
【问题描述】:
private string connectionString = "URI=file:" + Application.dataPath + "/Ooredoo_Nov16.sqlite";
void Start()
{
ClearDb ();
CreateDb ();
WriteToDb ("abc","a","1","10");
GetFromDb ();
}
private void WriteToDb(string code, string classs,string id,string status) 
{
using (IDbConnection dbConnection = new SqliteConnection (connectionString))
{
dbConnection.Open ();
using (IDbCommand dbCmd = dbConnection.CreateCommand ())
{
stringsqlQuery=String.Format(“insertintoQrCodeList(code,class,id,status)values(\”{0}\”,\”{1}\”,\”{2}\”,\”{3}\”)”,code,classs,id,status);
dbCmd.CommandText = sqlQuery;
dbCmd.ExecuteScalar ();
dbConnection.Close ();
}
}

像函数 WriteToDb() 我也为 ClearDb、CreateDb、GetFromDb 创建了函数

当我统一播放它时,它可以完美运行,但是当我在 android 和 windows 中进行构建时,它没有访问数据库。 根据关于统一设置高分数据库的教程 - https://www.youtube.com/watch?v=wV-dKxJU-0Y&list=PLX-uZVK_0K_7NmsYfe2BTOk_IamWC2kU3∈dex=4

我已经添加了所有的 dll ..仍然无法访问数据库以下 dll 已添加 libsqlite3、sqlite3、SQLite3.system.data

这个路径是 -"URI=file:" + Application.dataPath + "/Ooredoo_Nov16.sqlite";对构建有效

这是我用于 windows 构建的 output_log 文件

开始 MonoManager ReloadAssembly 平台组件:C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\UnityEngine.dll(此消息无害) 将 C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\UnityEngine.dll 加载到 Unity 子域中 平台组件:C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\Assembly-CSharp-firstpass.dll(此消息无害) 加载 C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\Assembly-CSharp-firstpass.dll 到 Unity 子域 平台组件:C:\Users\Arjun\Desktop\projects received\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\Assembly-CSharp.dll(此消息无害) 加载 C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\Assembly-CSharp.dll 到 Unity 子域 平台组件:C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\UnityEngine.UI.dll(此消息无害) 加载 C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\UnityEngine.UI.dll 到 Unity 子域 平台组件:C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\UnityEngine.Networking.dll(此消息无害) 加载 C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\UnityEngine.Networking.dll 到 Unity 子域 平台组件:C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\ICSharpCode.SharpZipLib.dll(此消息无害) 加载 C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\ICSharpCode.SharpZipLib.dll 到 Unity 子域 平台组件:C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\LitJson.dll(此消息无害) 将 C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\LitJson.dll 加载到 Unity 子域中 平台组件:C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\Mono.Data.Sqlite.dll(此消息无害) 加载 C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\Mono.Data.Sqlite.dll 到 Unity 子域 平台组件:C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\System.Data.dll(此消息无害) 加载 C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\System.Data.dll 到 Unity 子域 - 完成重新加载,在 0.050 秒内 平台组件:C:\Users\Arjun\Desktop\projects received\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\System.Core.dll(此消息无害) 平台组件:C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\System.dll(此消息无害) 桌面:1366x768 60Hz;虚拟:1366x768 在 0,0 正在初始化输入。

未找到 XInput1_3.dll。尝试 XInput9_1_0.dll 代替... 输入已初始化。

初始化触摸支持。

卸载时间:0.708009 毫秒 平台组件:C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\System.Transactions.dll(此消息无害) 平台组件:C:\Users\Arjun\Desktop\projects recieved\Unity 示例 - Copy\Spinner\SpinnerWindows_Data\Managed\System.Xml.dll(此消息无害) SqliteException:SQLite 错误 没有这样的表:QrCodeList 在 Mono.Data.Sqlite.SQLite3.Prepare (Mono.Data.Sqlite.SqliteConnection cnn, System.String strSql, Mono.Data.Sqlite.SqliteStatement 以前, UInt32 timeoutMS, System.String& strRemain) [0x00000] 在:0 在 Mono.Data.Sqlite.SqliteCommand.BuildNextCommand () [0x00000] in :0

(文件名:行:-1)

为 Enlighten 设置 1 个工作线程。 线程 -> id:f78 -> 优先级:1

【问题讨论】:

  • 你把 libsqlite3.sqlite3,SQLite#,system.data DLL 放在什么目录下?
  • 我已将 dll 文件放在我的插件文件夹中
  • libsqlite3, sqlite3, SQLite3.system.data

标签: sqlite unity3d dll plugins unity5


【解决方案1】:

这是因为编辑器中的 DLL 不在您的构建中。对于访问数据库,它们通常如下:I18N.dll、I18N.CJK.dll、I18N.MidEast.dll、I18N.Other.dll、I18N.Rare.dll 和 I18N.West.dll。如果您将 Unity 安装在默认位置,这些都可以在 C:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0 找到。只需在您的资产文件夹中创建一个名为“Plugins”的新文件夹,然后将上述所有 DLL 复制到该新插件文件夹中。

由于您使用的是 SQLite,您可能还需要从上述相同的文件夹中添加 System.Data.dll。

以后,您应该检查您的output_log.txt 文件以获取确切的错误消息。对于 Windows 构建,可以在 EXECUTABLE_NAME_Data/output_log.txt 中找到它

【讨论】:

  • 我已经添加了所有的 dll ..仍然无法访问数据库以下 dll 已添加 libsqlite3.sqlite3,SQLite#,system.data
  • libsqlite3, sqlite3, SQLite3.system.data
  • @Martinj 阅读您的输出日志文件,我发现以下错误:SqliteException:SQLite error no such table: QrCodeList at Mono.Data.Sqlite.SQLite3.Prepare ...。这让我相信,当你构建时,数据库的路径是不同的,从而导致找不到表。请检查您的构建文件路径是否有效。
  • 是的,当我构建数据库路径时会有所不同,对于 Windows 构建,它们是应该给出的特定数据库路径,你能帮我获得一些关于构建 Windows 应用程序的参考吗
  • @Martinj 查看 Unity 的 Applidation.dataPath 文档。当您为 Windows 构建时,将您的 Executable 和 EXECNAME_Data 文件夹保存在一个位置,该位置使数据库的文件路径与您的构建和在编辑器中运行时相同。例如,移动数据库并将构建保存到 Assets 文件夹上方的目录中。然后让文件路径为Application.dataPath/../database_name
猜你喜欢
  • 1970-01-01
  • 2018-08-04
  • 2011-07-17
  • 1970-01-01
  • 2011-06-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多