2009-09-17 8 views
20

J'ai créé une base de données via sqlite en C++.Enregistrement sur disque d'une base de données en mémoire

La base de données a été créée en mémoire (en utilisant le paramètre ": memory:" d'un nom de fichier), afin d'avoir un comportement très rapide.

La base de données est créée par les lignes suivantes:

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

Mon problème est: comment puis-je écrire la base de données en mémoire sur le disque? (à travers c/C++ bien sûr). J'ai lu quelque chose à propos des commandes ATTACH et DETACH sqlite, mais je peux les faire fonctionner uniquement avec le shell interactif sqlite (pas de code c/C++).

Salutations.

Répondre

19

Découvrez cet exemple: Loading and Saving In-Memory Databases

+0

Parfait! Cela a fonctionné parfaitement: D – Giancarlo

+0

Je recherche une documentation C# dans le même but. S'il vous plaît partager si vous le savez. –

+0

@Mubashar: Je ne connais pas C#. Je crois qu'il est facile de convertir l'exemple en C#. Les fonctions 'sqlite3_backup_X' font le travail. –

2

utilisation Déclaration de transaction avant de faire quoi que ce soit à la table. Cela garantit une manipulation rapide et des rollbacks. De cette façon, vous n'avez pas besoin d'implémenter la base de données directement dans la mémoire.