c# - Unity 中的 SQLite 数据库文件损坏

标签 c# database sqlite unity3d

您好,我在我的 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/

相关文章:

c# - 如何在不等待 C# 中被调用函数完成的情况下继续执行函数

mysql - MS-Access:表太多,文件太大 - 多个链接表查询?

python - 如何防止 django 数据库将已删除对象的 id 用于新对象?

python - 向现有模型添加字段在 Django 中不起作用

linux - 查询SQLite数据库文件大小?

c# - 输入第四位数字时引发文本框事件

c# - 将 DateTime SelectParameter 传递给 SqlDataSource

c++ - g++编译错误信息:/usr/bin/ld: cannot find -lssl

c# - 如何停止 Parallel.ForEach 循环?

database - 在 postgres 中创建表空间时权限被拒绝