Повреждение файла базы данных SQLite в Unity - PullRequest
0 голосов
/ 28 апреля 2018

Привет! Я использую SQLite в качестве базы данных в своем проекте Unity. По какой-то причине файл базы данных был поврежден, но, к счастью, у меня была резервная копия, поэтому я ничего не потерял. Я думаю, что причиной коррупции было использование единого коллаба для обмена файлами базы данных. У меня вопрос, что я могу сделать, чтобы не повредить файл снова? Также может ли он испортиться после выпуска игры в локальных файлах игрока?

А вот статические методы, которые я использую для выполнения команд, возможно, с этим что-то не так.

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 голосов
/ 29 апреля 2018

SQLite реализует атомарные транзакции , но эти гарантии действуют только до тех пор, пока доступ к файлу базы данных осуществляется только через библиотеку SQLite.

В вашем случае вполне вероятно, что файл базы данных был скопирован с компьютера вашего друга в середине транзакции, то есть некоторые изменения не закончились в опубликованной версии. Единственный способ избежать этого - убедиться, что в данный момент файлы не изменяются при публикации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...