您好我在我的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();
}
}
}
答案 0 :(得分:1)
SQLite实现atomic transactions,但只有通过SQLite库访问数据库文件时,这些保证才会成立。
在您的情况下,可能是在交易过程中从朋友的计算机复制了数据库文件,即某些更改未在发布的版本中结束。避免这种情况的唯一方法是确保在进行发布时当前没有文件被修改。