2012-07-08 16 views
13

के रूप में मेमोरी स्ट्रीम मैं वर्तमान में SQLite का उपयोग अपने सी # प्रोजेक्ट के लिए डीबी इंजन के रूप में करने के बारे में सोच रहा हूं, लेकिन मैं निम्न समस्या में भाग गया: मुझे मेमोरी स्टोरेज के लिए कोई एपीआई नहीं मिल रहा है। मैं जो हासिल करना चाहता हूं वह निम्नलिखित है:डीबी

प्रोग्राम की शुरुआत पर मैं डीबी फ़ाइल (एचडीडी से) को स्मृति में लोड करना चाहता हूं। प्रोग्राम के निष्पादन के दौरान मैं इस मेमोरी स्ट्रीम को वास्तविक डीबी (पढ़ने, लिखने, डालने, चयन आदि) के रूप में उपयोग करना चाहता हूं। बंद करने पर फ़ाइल को स्ट्रीम में सहेजें।

क्या कोई मुझे सही तरीके से इंगित कर सकता है या किसी अन्य डीबी इंजन का सुझाव दे सकता है जो इस उद्देश्य के लिए बेहतर होगा।

उत्तर

31

आप SQLite Online Backup API का उपयोग कर सकते हैं जिसमें डीबी फ़ाइल को स्मृति, फ़ाइल में स्मृति में कॉपी करने की क्षमता है। SQLite Online Backup API के लिए मूल समर्थन System.Data.SQLite में संस्करण 1.0.80.0 (SQLite 3.7.11 के साथ) में मौजूद है।

SQLiteConnection source = new SQLiteConnection("Data Source=c:\\test.db"); 
source.Open(); 

using (SQLiteConnection destination = new SQLiteConnection(
    "Data Source=:memory:")) 
{ 
    destination.Open();    

    // copy db file to memory 
    source.BackupDatabase(destination, "main", "main",-1, null, 0); 
    source.Close(); 

    // insert, select ,...   
    using (SQLiteCommand command = new SQLiteCommand()) 
    { 
    command.CommandText = 
     "INSERT INTO t1 (x) VALUES('some new value');"; 

    command.Connection = destination; 
    command.ExecuteNonQuery(); 
    }    

    source = new SQLiteConnection("Data Source=c:\\test.db"); 
    source.Open(); 

    // save memory db to file 
    destination.BackupDatabase(source, "main", "main",-1, null, 0); 
    source.Close();    
} 
+1

इस अच्छे और साफ समाधान के लिए, धन्यवाद:

यह सरल उदाहरण कैसे एपीआई सी # में इस्तेमाल किया जा सकता है। – Anonymous

+8

क्या डिस्क को स्पर्श किए बिना बाइट [] प्राप्त करने के लिए एक ही चीज़ करने का कोई तरीका है? – Gleno

+3

चेतावनी: इन-मेमोरी डेटाबेस के लिए बैकअप API का उपयोग करना * [स्थायित्व] को हटाता है (http://en.wikipedia.org/wiki/Durability_ (डेटाबेस_सिस्टम)) गारंटी देता है *। – user2864740