Sto provando a lavorare su un'app iOS che consente agli utenti di sincronizzare i loro database SQLite tramite Bluetooth utilizzando GameKit. C'è un modo per eseguire l'equivalente di .dump sulla shell sqlite usando una delle tante librerie sqlite-obiettivo-c?Esiste un equivalente sqlite .dump nell'obiettivo-c?
10
A
risposta
-1
Non credo. Ma, è possibile eseguire un'istruzione SELECT * e poi iterare su argc nella funzione di callback.
Qualcosa di simile
void callback (void *param, int argc, char **argv, char **azColName)
{
for(int i=0;i<argc;i++)
{
get ... azColName[i] ... argv[i]
}
}
+0
Puoi ampliare questa risposta per dare un po 'più di contesto? Penso di capire più o meno quello che stai dicendo, ma non sono abbastanza sicuro di come funzionerebbe in una vera app. – buildsucceeded
3
È possibile creare un file di backup del database, inviare che più e poi fare la fusione sul dispositivo di destinazione. Il codice per creare il file di backup è il seguente:
- (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);
}
Problemi correlati
- 1. Equivalente di dump del core per Java
- 2. Esiste un equivalente PHP in sqlite3_limit?
- 3. Esiste un RRDTool .net equivalente
- 4. Esiste un metodo equivalente LINQ?
- 5. equivalente SQLITE per Oracle's ROWNUM?
- 6. SQLite equivalente alla funzione GREATEST di PostgreSQL
- 7. SQLite IF esiste Clausola
- 8. Esiste un valore letterale booleano in SQLite?
- 9. Esiste un tipo Long in SQLite?
- 10. Esiste un incremento automatico in sqlite?
- 11. Esiste un equivalente MessageBox in WPF?
- 12. Esiste un equivalente a "continua" in Parallel.ForEach?
- 13. Esiste un css equivalente a "align =" center ""?
- 14. Esiste un valore .Net equivalente a java.util.concurrent.Executor?
- 15. Esiste un equivalente in C++ per getcwd?
- 16. Esiste un equivalente C# a IsDebuggerPresent()?
- 17. Esiste un equivalente di Groovy in C#?
- 18. Esiste un PHP equivalente a Compass?
- 19. Esiste un equivalente di JMS in .NET?
- 20. Esiste un numero intero equivalente di __toString()
- 21. Esiste un equivalente di str_replace in C++?
- 22. Esiste un vim equivalente a '! $' Di bash?
- 23. Esiste un equivalente di "this" in powershell?
- 24. JSON: esiste un equivalente CDATA XML?
- 25. Esiste un equivalente AppCompat di Widget.Material.Spinner.Underlined?
- 26. Esiste un dplyr equivalente a data.table :: rleid?
- 27. Esiste un equivalente MySQL di sprintf?
- 28. Esiste un OO Perl equivalente a un'interfaccia?
- 29. Esiste un equivalente ColdFusion di phpinfo()
- 30. Esiste un equivalente Cake per Python?
Non esiste una classe pronta all'uso per questo comando di dump finora. Non dovrebbe essere troppo difficile leggere tutte le tabelle e generare un dump.sql con le posizioni INSERT. –
Qualcosa che potrebbe aiutarti: puoi ottenere il catalogo delle tabelle facendo una query alla tabella di sistema 'sqlite_master' (ad esempio, "SELEZIONA * DA sqlite_master;"). Se si esegue iterazione sui risultati, è possibile ottenere il nome della tabella dal campo 'tbl_name' e il campo 'sql' contiene l'istruzione 'CREATE TABLE'. Analizza quest'ultimo per ottenere i nomi dei campi. – mpemburn