2009-09-17 18 views
20

Zrobiłem bazę danych poprzez sqlite w języku C++.Zapisywanie na dysku bazy danych w pamięci

Baza danych została utworzona w pamięci (za pomocą parametru ": memory:" nazwy pliku), aby uzyskać bardzo szybkie zachowanie.

Baza danych jest tworzona przez następujące linie:

sqlite3* mem_database; 
if((SQLITE_OK == sqlite3_open(":memory:", &mem_database)){ 
    // The db has been correctly created and 
    // I can do some stuff with it. 
} 
sqlite3_close(mem_database); 

Mój problem: w jaki sposób mogę napisać bazy danych w pamięci na dysku? (oczywiście przez c/C++).

Przeczytałem coś o poleceniach sqlite ATTACH i DETACH, ale mogę sprawić, by działały tylko z interaktywną powłoką sqlite (nie z kodu c/C++).

Pozdrawia.

Odpowiedz

19

Sprawdź ten przykład: Loading and Saving In-Memory Databases

+0

Świetnie! To działało idealnie: D – Giancarlo

+0

Poszukuję dokumentacji C# w tym samym celu. proszę podziel się, jeśli wiesz. –

+0

@Mubashar: Nie jestem zaznajomiony z C#. Uważam, że łatwo przekonwertować przykład w języku C#. Funkcje 'sqlite3_backup_X' wykonują zadanie. –

2

Zastosowanie zestawienia transakcji zanim cokolwiek do stołu. Zapewnia to również szybką obsługę i wycofywanie zmian. W ten sposób nie musisz bezpośrednio implementować bazy danych w pamięci.

Powiązane problemy