Unity

时间:2018-04-28 18:14:03

标签: 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();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

SQLite实现atomic transactions,但只有通过SQLite库访问数据库文件时,这些保证才会成立。

在您的情况下,可能是在交易过程中从朋友的计算机复制了数据库文件,即某些更改未在发布的版本中结束。避免这种情况的唯一方法是确保在进行发布时当前没有文件被修改。