您好,我在我的 Unity 项目中使用 SQLite 作为数据库。由于某种原因,数据库文件损坏了,但幸运的是我有备份,所以我没有丢失任何东西。我认为损坏背后的原因是使用 unity collab 共享数据库文件。我的问题是我该怎么做才不会再次损坏文件?在玩家的本地游戏文件中发布游戏后它也会损坏吗?
这是我用来执行命令的静态方法,可能有问题。
public static void Execute(string command, ref DataTable datatable)
{
string dbPath = ("Data Source=" + Application.dataPath + "/database.s3db");
using (SqliteConnection cnt = new SqliteConnection(dbPath))
{
using (SqliteCommand cmd = new SqliteCommand(command, cnt))
{
using (SqliteDataAdapter adapter = new SqliteDataAdapter(cmd))
{
adapter.Fill(datatable);
}
}
}
}
public static void Execute(string command)
{
string dbPath = ("Data Source=" + Application.dataPath + "/database.s3db");
using (SqliteConnection cnt = new SqliteConnection(dbPath))
{
using (SqliteCommand cmd = new SqliteCommand(command, cnt))
{
cnt.Open();
cmd.ExecuteNonQuery();
cnt.Close();
}
}
}
最佳答案
SQLite 实现 atomic transactions ,但这些保证仅在数据库文件仅通过 SQLite 库访问时有效。
在您的情况下,数据库文件很可能是在交易过程中从您 friend 的计算机上复制的,即某些更改最终没有出现在已发布的版本中。避免这种情况的唯一方法是确保在进行发布时当前没有文件正在被修改。
关于c# - Unity 中的 SQLite 数据库文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50079658/