Próbuję pracować nad aplikacją na iOS, która pozwoli użytkownikom synchronizować bazy danych sqlite przez Bluetooth za pomocą GameKit. Czy istnieje sposób na wykonanie odpowiednika .dump na powłoce sqlite za pomocą dowolnej z wielu bibliotek SIClite target-c?Czy w obiekcie c znajduje się równoważnik sqlite .dump?
10
A
Odpowiedz
-1
Nie sądzę. Można jednak wykonać instrukcję SELECT *, a następnie iterować po argc w funkcji wywołania zwrotnego.
Coś
void callback (void *param, int argc, char **argv, char **azColName)
{
for(int i=0;i<argc;i++)
{
get ... azColName[i] ... argv[i]
}
}
+0
Czy możesz rozwinąć tę odpowiedź, aby podać nieco więcej kontekstu? Myślę, że rozumiem mniej więcej to, co mówisz, ale nie jestem do końca pewien, jak to będzie działać w rzeczywistej aplikacji. – buildsucceeded
3
Można utworzyć plik kopii zapasowej bazy danych, wysyłanie, że w ciągu, a następnie wykonać łączenie na urządzeniu docelowym. Kod do utworzenia pliku kopii zapasowej jest następujący:
- (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);
}
Powiązane problemy
- 1. Równoważnik NSMutableArray w C++?
- 2. Równoważnik C# ObservableCollection w Javie
- 3. C#: Dlaczego aplikacja znajduje się w System.Windows.Forms?
- 4. Sprawdź, czy wartość znajduje się w tablicy (C#)
- 5. C# Równoważnik Java IdentityHashMap
- 6. Czy C# ma równoważnik std :: nth_element?
- 7. Równoważnik obiecywania w języku C#
- 8. Dump C# DataTable do pliku
- 9. Ustalenie, czy zmienna znajduje się w zasięgu?
- 10. Czy w IDEA znajduje się adnotacja @NonNullByDefault?
- 11. Określanie, czy wartość wyliczenia znajduje się na liście (C#)
- 12. Czy jest możliwe programowe przekonwertowanie bazy danych SQLite na instrukcje SQL w C/C++?
- 13. Równoważnik rozmiaru C dla makr
- 14. sprawdzanie, czy rekord istnieje w Sqlite + C#
- 15. Mongooza wypełnia się w obiekcie?
- 16. Równoważnik Ruby method_missing w Objective C/iOS
- 17. Równoważnik identyfikatora SQL Server unikalny w C#
- 18. Równoważnik słowa kluczowego Super w C#
- 19. C# Równoważnik VB 6 DoEvents
- 20. Gdzie znajduje się Microsoft.Deployment.WindowsInstaller?
- 21. Ustalenie, czy punkt znajduje się wewnątrz geometrii
- 22. Określ, czy punkt znajduje się wewnątrz wielokąta?
- 23. Szybki sposób ustalania, czy w JPanel znajduje się Componet
- 24. Równoważnik DataTable w Javie
- 25. Jak ustalić, czy punkt współrzędnych GeoCom znajduje się w granicach
- 26. Jak sprawdzić, czy tekst znajduje się w kolumnie w Kątomierz
- 27. Ile plików nagłówkowych znajduje się w standardzie C++?
- 28. Gdzie znajduje się "ListViewItemPlaceholderBackgroundThemeBrush"?
- 29. Równoważnik include() w HTML
- 30. Równoważnik setdefault w Go?
Dla tej komendy dump nie ma gotowej do użycia klasy. Nie powinno być zbyt trudne czytanie wszystkich tabel i generowanie dump.sql ze statusem INSERT. –
Coś, co może pomóc: możesz uzyskać katalog tabel, wysyłając zapytanie do tabeli systemowej "sqlite_master" (np. "SELECT * FROM sqlite_master;"). Jeśli dokonasz iteracji wyników, możesz pobrać nazwę tabeli z pola "nazwa_tabliczna", a pole "sql" zawiera instrukcję "STWÓRZ TABELĘ". Przetwórz te ostatnie, aby uzyskać nazwy pól. – mpemburn