Есть ли sqlite .dump эквивалентный в target-c? - PullRequest
10 голосов
/ 16 сентября 2011

Я пытаюсь работать над приложением для iOS, которое позволит пользователям синхронизировать свои базы данных sqlite через Bluetooth с помощью GameKit.Есть ли способ выполнить эквивалент .dump на оболочке sqlite, используя любую из множества библиотек sqlite target-c?

Ответы [ 2 ]

3 голосов
/ 13 декабря 2014

Вы можете создать файл резервной базы данных, отправить его заново, а затем выполнить объединение на целевом устройстве.Код для создания файла резервной копии выглядит следующим образом:

- (void) exportDB {

   sqlite3 *sourceDB, *destinationDB;
   sqlite3_backup *sql3Backup;

   NSString *sourceDBPath = @"/path/to/source/database";
   NSString *destinationDBPath = @"/path/to/destination/database";

   if(sqlite3_open([sourceDBPath UTF8String],&sourceDB) != SQLITE_OK){
       NSLog(@"%s\n",sqlite3_errmsg(sourceDB));
       return ;
   }

   if(sqlite3_open([destinationDBPath UTF8String],&destinationDB) != SQLITE_OK){
       sqlite3_close(sourceDB);
       NSLog(@"%s\n",sqlite3_errmsg(destinationDB));
       return;
   }

   sql3Backup = sqlite3_backup_init(destinationDB,"main",sourceDB,"main");
   if(sql3Backup == NULL){
       sqlite3_close(sourceDB);
       sqlite3_close(destinationDB);
       NSLog(@"%s\n",sqlite3_errmsg(destinationDB));
       return;
   }

   if(sqlite3_backup_step(sql3Backup, -1) != SQLITE_DONE){
       NSLog(@"%s\n",sqlite3_errmsg(destinationDB));
       return;
   }

   if(sqlite3_backup_finish(sql3Backup) != SQLITE_OK){
       NSLog(@"%s\n",sqlite3_errmsg(destinationDB));
       return;
   }

   sqlite3_close(sourceDB);
   sqlite3_close(destinationDB);
}
0 голосов
/ 25 мая 2013

Я так не думаю. Но вы можете выполнить инструкцию SELECT *, а затем выполнить итерацию по argc в функции обратного вызова.

Что-то вроде

void callback (void *param, int argc, char **argv, char **azColName)
{
    for(int i=0;i<argc;i++)
    {
        get ... azColName[i] ... argv[i]
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...