在objective-c中有一个相当于sqlite .dump吗?

我正在尝试一个iOS应用程序,允许用户通过使用GameKit的蓝牙同步他们的SQLite数据库。 有没有办法使用任何一个sqlite的Objective-C库在sqlite shell上执行相同的.dump?

您可以创build一个备份数据库文件,将其发送,然后在目标设备上进行合并。 创build备份文件的代码如下所示:

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

我不这么认为。 但是,您可以执行SELECT *语句,然后在callback函数中遍历argc。

就像是

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