Estoy tratando de trabajar en una aplicación iOS que permita a los usuarios sincronizar sus bases de datos sqlite a través de Bluetooth utilizando GameKit. ¿Hay alguna manera de realizar el equivalente de .dump en el shell sqlite usando cualquiera de las muchas bibliotecas sqlite objetivo-c?¿Hay un equivalente sqlite .dump en objetivo-c?
10
A
Respuesta
-1
No lo creo. Pero, podría ejecutar una instrucción SELECT * y luego iterar sobre argc en la función de devolución de llamada.
Algo así como
void callback (void *param, int argc, char **argv, char **azColName)
{
for(int i=0;i<argc;i++)
{
get ... azColName[i] ... argv[i]
}
}
+0
¿Puedes ampliar esta respuesta para dar un poco más de contexto? Creo que entiendo más o menos lo que dices, pero no estoy muy seguro de cómo funcionaría en una aplicación real. – buildsucceeded
3
Se puede crear un archivo de base de datos de copia de seguridad, que envíe una y luego hacer la fusión en el dispositivo de destino. El código para crear el archivo de copia de seguridad es el siguiente:
- (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);
}
Cuestiones relacionadas
- 1. objetivoC/CMTime - convierte AVPlayer.duration en milisegundos
- 2. SQLite equivalente para Oracle ROWNUM?
- 3. ¿Es posible ver los subprocesos de dump dump/threads en heap dump
- 4. ¿Hay un incremento automático en sqlite?
- 5. ¿Hay un literal booleano en SQLite?
- 6. ¿Hay un equivalente 'no en' en GORM?
- 7. ¿Hay un método equivalente LINQ?
- 8. ¿Hay un Equivalente MessageBox.Show() en MonoCode
- 9. ¿Hay un equivalente de str_replace en C++?
- 10. ¿Hay un equivalente de MessageBox en WPF?
- 11. ¿Hay un equivalente de "esto" en Powershell?
- 12. ¿Hay un equivalente de JMS en .NET?
- 13. ¿Hay un equivalente a typedef en C#?
- 14. ¿Hay un equivalente a Groovy en C#?
- 15. ¿Hay un equivalente a DBus en OSX?
- 16. ¿Hay un equivalente de Rake en Python?
- 17. ¿Hay un equivalente a memcpy() en Java?
- 18. ¿Hay un equivalente de Make en Windows?
- 19. ¿Hay un equivalente de XDomainRequest en Firefox?
- 20. ¿Hay un equivalente de ucwords en java
- 21. ¿Hay un equivalente @inheritDoc en Doxygen?
- 22. ¿Hay un "\ n" equivalente en VBscript?
- 23. ¿Hay un equivalente de "gettimeofday" en .NET
- 24. ¿Hay un equivalente a SuppressWarnings en Scala?
- 25. dump csv de sqlalchemy
- 26. ¿Hay tipo Long en SQLite?
- 27. ¿Hay palabras reservadas en SQLite?
- 28. equivalente sqlite de row_number() sobre (partición ...
- 29. SQL Dump from DB2
- 30. ¿Hay un contenedor .NET/C# para SQLite?
No existe una clase lista para usar para este comando de volcado hasta el momento. No debería ser demasiado difícil leer todas las tablas y generar un dump.sql con los staements INSERT. –
Algo que podría ayudar: Puede obtener el catálogo de tablas haciendo una consulta a la tabla del sistema 'sqlite_master' (es decir, "SELECT * FROM sqlite_master;"). Si itera sobre los resultados, puede obtener el nombre de la tabla del campo 'tbl_name' y el campo 'sql' contiene la instrucción 'CREATE TABLE'. Parse el último para obtener los nombres de campo. – mpemburn