2009-09-17 3 views
20

Ho creato un database tramite sqlite in C++.Salvataggio su disco di un database in memoria

Il db è stato creato in memoria (utilizzando il parametro ": memory:" insted di un nome file), per avere un comportamento molto veloce.

Il database viene creato dalle seguenti linee:

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); 

il mio problema è: come posso scrivere il database in memoria su disco? (attraverso c/C++ ovviamente).

Ho letto qualcosa sui comandi sqlite ATTACH e DETACH, ma riesco a farli funzionare solo con la shell interattiva sqlite (non dal codice c/C++).

Saluti.

risposta

19

Partenza questo esempio: Loading and Saving In-Memory Databases

+0

Ottimo! Ciò ha funzionato perfettamente: D – Giancarlo

+0

Sto cercando la documentazione C# per lo stesso scopo. per favore condividi se lo sai. –

+0

@Mubashar: Non ho familiarità con C#. Credo che sia facile convertire l'esempio in C#. Le funzioni 'sqlite3_backup_X' fanno il lavoro. –

2

Usa dichiarazione transazione prima di fare qualsiasi cosa al tavolo. Questo assicura una gestione veloce e rollback pure. In questo modo, non è necessario implementare il database direttamente nella memoria.