我正在嘗試一個iOS應用程序,它允許用戶通過使用GameKit的藍牙同步他們的sqlite數據庫。有沒有一種方法可以在sqlite shell上使用任何一種sqlite objective-c庫來執行.dump的等效功能?在objective-c中有一個相當於sqlite.dump的嗎?
10
A
回答
-1
我不這麼認爲。但是,您可以執行SELECT *語句,然後在回調函數中遍歷argc。
喜歡的東西
void callback (void *param, int argc, char **argv, char **azColName)
{
for(int i=0;i<argc;i++)
{
get ... azColName[i] ... argv[i]
}
}
+0
你可以擴大這個答案給更多的上下文嗎?我想我或多或少知道你在說什麼,但我不太確定它在實際應用程序中的工作方式。 – buildsucceeded
3
您可以創建一個備份數據庫文件,發送過來,然後做在目標設備上的合併。創建備份文件的代碼如下所示:
- (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);
}
相關問題
- 1. PowerShell有一個相當於popen嗎?
- 2. Django有相當於rails.vim嗎?
- 3. Angluar2有相當於ngCsp嗎?
- 4. Android有相當於UIScrollView嗎?
- 5. 這相當於一個std :: string嗎?
- 6. ObjectiveC中的Monotouch/C#相當於id <SomeType>?
- 7. 相當於C#的DateTime.Now在Java中嗎?
- 8. Android有相當於JPanel的嗎?
- 9. Django有相當於ActiveScaffold的嗎?
- 10. SQLAlchemy有相當於Django的get_or_create嗎?
- 11. 在Spark Java API中Scala相當於一些,沒有一個
- 12. 是否有一個Monoid相當於Bifunctor?
- 13. 相當於$不在貓鼬中嗎?
- 14. 相當於JMX的C++嗎?
- 15. AppFramework中的哪一個相當於jQM
- 16. 對於SQL * Plus,有相當於少一些嗎?
- 17. 單聲道有相當於ILDASM嗎?
- 18. Mercurial有相當於git clean嗎?
- 19. CueText相當於一個TMemo
- 20. 相當於scons中的「touch」嗎?
- 21. 相當於Oracle中的IF NOT EXISTS嗎?
- 22. 相當於J2ME中的FileInputStream嗎?
- 23. $((expr))相當於bash中的$ [expr]嗎?
- 24. Android有一些相當於iPhone的支桿和彈簧嗎?
- 25. 相當於std :: set嗎?
- 26. 相當於Silverlight/Java Applet嗎?
- 27. 一個ParsePosition相當於在C#
- 28. PL/SQL在C#中有相當於數組參數嗎?
- 29. 相當於在Nim中加載一個JSON到一個字典
- 30. 是否有一個相當於WinForms中的trace = true?
到目前爲止,此轉儲命令沒有準備使用的類。讀取所有表並使用INSERT staements生成dump.sql應該不會太困難。 –
可能有所幫助:可以通過查詢系統表'sqlite_master'(即「SELECT * FROM sqlite_master;」)來獲取表的目錄。如果迭代結果,則可以從'tbl_name'字段獲取表名,'sql'字段包含'CREATE TABLE'語句。解析後者以獲取字段名稱。 – mpemburn