Команда SQLite3 AttachDatabase не будет работать - PullRequest
1 голос
/ 20 марта 2012

Я пытаюсь соединить две базы данных SQLite в проекте Unity3d, и у меня возникают некоторые проблемы.

Мои пути к базам данных и имена файлов верны (проверены и подтверждены), и я могу запрашивать / вставлять / и т. Д. ... из каждой базы данных в отдельности. Однако, когда я запускаю команду ATTACH, она возвращает ошибку о том, что моя логика SQL неверна. Я просмотрел множество ссылок и примеров, каждый из которых указывает на то, что моя команда должна выполняться так, как ожидалось.

Вот соответствующий код:

//open TEMP database
DBAccess.OpenOrCreateDB("/Resources/Data/SaveGames/" + GameController.user.username +   
    "/", GameController.user.username + "_TEMP");

//attach SAVEGAME database and transfer data from TEMP database
DBAccess.NonQuery("ATTACH DATABASE '" + Application.dataPath + "/Resources/GameData/" 
    + GameController.user.username + "/" + GameController.user.username + DBAccess.DBEXT 
    + "' AS LOAD_DB;");

//copy records from TEMP database to save game database
//(omitted because not relevant to issue)    

//detach SAVEGAME database
DBAccess.NonQuery("PRAGMA LOAD_DB.journal_mode=delete; DETACH DATABASE LOAD_DB;");  

//close database
DBAccess.CloseDB();

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

Моя ошибка отладки выводит следующее:

DBAccess -- Cannot perform command with statement: <ATTACH '/Users/scottwindsor/ADITL/
Assets/Resources/GameData/New User/New User.db' AS LOAD_DB;>

Казалось бы, моя команда SQL должна работать ... Любая помощь приветствуется.

Технические характеристики:

  • Платформа: OSX (я думаю, Lepoard)
  • Компилятор: Unity3D (игровой движок)
  • Язык: C #
  • SQL: SQLite3.dll
  • Использование IDBCommand.ExecuteNonQuery () для отправки незапрошенных команд в базу данных.
  • Использование IDBCommand.ExecuteReader () для отправки всех других команд / запросов в базу данных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...