objective-c中是否有sqlite.dump等价物?

objective-c中是否有sqlite.dump等价物?,objective-c,ios,sqlite,Objective C,Ios,Sqlite,我正在尝试一个iOS应用程序,它允许用户使用GameKit通过蓝牙同步他们的sqlite数据库。有没有一种方法可以使用许多sqlite objective-c库中的任何一个在sqlite shell上执行等效的.dump 我不这么认为。但是,您可以执行SELECT*语句,然后在回调函数中迭代argc 差不多 void callback (void *param, int argc, char **argv, char **azColName) { for(int i=0;i<arg

我正在尝试一个iOS应用程序,它允许用户使用GameKit通过蓝牙同步他们的sqlite数据库。有没有一种方法可以使用许多sqlite objective-c库中的任何一个在sqlite shell上执行等效的.dump

我不这么认为。但是,您可以执行SELECT*语句,然后在回调函数中迭代argc

差不多

void callback (void *param, int argc, char **argv, char **azColName)
{
    for(int i=0;i<argc;i++)
    {
        get ... azColName[i] ... argv[i]
    }
}
void回调(void*param,int-argc,char**argv,char**azColName)
{

对于(int i=0;i您可以创建一个备份数据库文件,将其发送过来,然后在目标设备上进行合并。创建备份文件的代码如下:

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

到目前为止,此转储命令还没有现成的类。读取所有表并使用INSERT语句生成dump.sql应该不会太困难。这可能会有所帮助:您可以通过查询系统表“sqlite_master”(即“SELECT*FROM sqlite_master;”)来获取表的目录。如果对结果进行迭代,可以从“tbl_name”字段中获取表名,“sql”字段包含“CREATE table”语句。解析后者以获取字段名。能否对此答案进行扩展以提供更多上下文?我想我或多或少理解您的意思,但我不太确定它在a中如何工作实际应用程序。