ऐसा संभव नहीं है। आप क्या कर सकते हैं अपने डीएलएल प्रोजेक्ट में डीबी एम्बेड करें और इसे फाइल सिस्टम पर कुछ स्थान पर डंप करें (ऐपडाटा हो सकता है?) और वहां से पढ़ और लिखें। निष्पादन योग्य (या डीएलएस) के अंदर सीधे बैठने के लिए डीबी होने से यह एक अच्छा विचार नहीं हो सकता है कि यह तकनीकी रूप से अक्षम होने के अलावा एप्लिकेशन के आकार को फटकारता है।
वितरित करने के लिए एक निष्पादन योग्य होने के कारण मुझे पसंद स्वाद का मामला है। आपके मामले में लेकिन समस्याएं अधिक हैं। यह केवल डीबी फाइल को एम्बेड करने के बारे में नहीं है, इसके साथ जुड़े डीएलएस के बारे में क्या? कदम 2 हैं:
1) के रूप में Embedded Resource
(जरूरी नहीं कि एक) अपनी परियोजना के लिए अपने डाटाबेस के साथ जुड़े आवश्यक DLLs (System.Data.SQLite
) जोड़ें और सिस्टम स्वचालित रूप से विधानसभा संबंधी विवादों का समाधान करते हैं। Catch it here इसे कैसे करें।
2) अब या तो अपनी परियोजना के अपने Resources
करने के लिए अपने डाटाबेस फ़ाइल जोड़ने (और उसे निकालने के)
static void DumpDatabase()
{
var dbFullPath = Utility.GetDbFullPath(); //your path
if (File.Exists(dbFullPath))
return; //whatever your logic is
File.WriteAllBytes(dbFullPath, Properties.Resources.myDb);
}
या भी बेहतर अपनी परियोजना में इस तरह के रूप db एम्बेड नहीं है, लेकिन करने के लिए तर्क बारे में अपने आवेदन में डेटाबेस बनाएँ। क्या होगा यदि कल आपको SQLite के संस्करण को बदलने की आवश्यकता है, तो 3 से 4 तक कहें? पहले दृष्टिकोण के साथ आपको अपने लिए डेटाबेस बनाने और प्रोजेक्ट में इसे फिर से एम्बेड करने की आवश्यकता है। लेकिन यदि आप अपने आवेदन में डीबी बनाने के लिए तर्क लिख रहे हैं तो SQLite संस्करण अपडेट करना केवल ADO.NET dll को बदलने का मामला है (कोड वही रहता है)। इस तरह हो सकता है:
static void DumpDatabase()
{
var dbFullPath = Utility.GetDbFullPath();
if (File.Exists(dbFullPath))
return; //whatever your logic is
CreateDb(dbFullPath);
}
static void Create(string dbFullPath)
{
SQLiteConnection.CreateFile(dbFullPath);
string query = @"
CREATE TABLE [haha] (.............)
CREATE TABLE ..............";
Execute(query);
}
और कनेक्शन स्ट्रिंग में FailIfMissing=False;
यह संभवतः संभव नहीं हो सकता है जोड़ें। आप डेटाबेस में कैसे लिखेंगे? आपको लेखन के लिए असेंबली खोलनी होगी। जवाब नहीं दे रहा क्योंकि मैं तकनीकी विवरण प्रदान नहीं कर सकता। – Will
यहां तक कि यदि यह संभव था, तो भी मुझे लगता है कि यह कुछ सुरक्षा सूट पागल - एक कोड फ़ाइल में बड़े, निरंतर परिवर्तन भेज देगा। – dommer
यदि आपके पास थोड़ी सी * केवल पढ़ने के लिए * डेटा था जिसे आप क्वेरी करना चाहते थे, तो शायद यह ठीक काम करेगा - संसाधन को इन-मेमोरी डेटाबेस में पढ़ें और इसे पूछें। – Shog9