2009-10-09 7 views
5

वीएस -2008 में मेरे विनफॉर्म एप्लिकेशन के लिए स्क्लाइट का उपयोग करने की कोशिश करने के लिए कुछ दिशा प्राप्त करने के लिए बहुत अच्छा होगा।सी # Winforms आवेदन के साथ SQLite का उपयोग - कुछ बुनियादी सवाल?

  1. स्थापना - यह सिर्फ मेरी VS2008 परियोजना में कुछ फ़ोल्डर में "System.Data.SQLite.DLL" फ़ाइल ड्रॉप है (उदाहरण के लिए के लिए एक फ़ोल्डर बना), और फिर इसे करने के लिए एक "संदर्भ" बनाने के? मैंने CopyGlobal = TRUE संदर्भ की संपत्ति बनाई है। विचार यह है कि जब मैं अपने आवेदन की तैनाती इस काम करना चाहिए (उदाहरण के लिए आवेदन के लिए DLL तैनात) है

  2. प्रारंभिक डाटाबेस - मैं एक प्रारंभिक डेटाबेस बनाने के लिए है या नहीं है? मैं सहायता फ़ाइल में नीचे उल्लिखित कोड देखता हूं लेकिन डीबी वास्तव में क्या कनेक्ट करता है और डीबी फ़ाइल कहां से मिलती है?

    DbProviderFactory fact = DbProviderFactories.GetFactory("System.Data.SQLite"); 
    using (DbConnection cnn = fact.CreateConnection()) 
    { 
        cnn.ConnectionString = "Data Source=test.db3"; 
        cnn.Open(); 
    } 
    
  3. उपयोग करने के तरीकों - क्या यह आम तौर पर मैं कॉल/कॉल करता हूं?

    DbProviderFactory fact = DbProviderFactories.GetFactory("System.Data.SQLite"); 
    using (DbConnection myconnection = fact.CreateConnection()) 
    { 
        myconnection.ConnectionString = "Data Source=test.db3"; 
        myconnection.Open(); 
        SQLiteTransaction mytransaction = SQLiteTransaction)myconnection.BeginTransaction(); 
        SQLiteCommand mycommand = new SQLiteCommand((SQLiteConnection)myconnection); 
        mycommand.CommandText = "SELECT * FROM SYSTEM"; 
        mycommand.ExecuteNonQuery(); 
        mytransaction.Commit(); 
        myconnection.Close(); 
    } 
    
  4. मैं डेटाबेस टेबल कैसे सेटअप करूं? क्या मैं इसे अपने वीएस -2008 प्रोजेक्ट में टेम्पलेट के रूप में स्टोर करूंगा? या मैं कोड में डेटाबेस के निर्माण को स्वचालित रूप से स्वचालित करना चाहता हूं यदि वह वहां नहीं था?

  5. यदि 4 से विचार पहले टेबल सेट करना है, तो मैं इस प्रारंभिक डेटाबेस फ़ाइल को कहां संग्रहीत करूं? जैसे कि जब मैं इसे परीक्षण करने के लिए प्रोजेक्ट चलाता हूं और फिर मैं डेटाबेस फ़ाइल का उपयोग करता हूं, जिसे मैं परीक्षण कर रहा हूं, उसके बाद बाद में स्क्रैप हो जाता है। मुझे लगता है कि मैं यह सुनिश्चित करने के लिए कह रहा हूं कि मेरे पास एक अलग खाली है लेकिन मेरे वीएस -2008 प्रोजेक्ट में "स्रोत" के रूप में कॉन्फ़िगर किया गया है (लेकिन टेबल के साथ), लेकिन जब मैं इसे चला/डीबग करता हूं, तो यह परीक्षण में उपयोग के लिए इसकी एक प्रति लेगा ?

धन्यवाद

+0

टिप्पणी यकीन है कि क्यों - लेकिन अच्छी तरह से प्रदर्शित करने के लिए – Greg

उत्तर

4
  1. हां। SQLite एक xcopy-तैनाती डेटाबेस है; कोई पंजीकरण नहीं है और आपके ऐप को इसका उपयोग करने के लिए केवल डीएलएल की आवश्यकता है।

  2. डेटाबेस कनेक्शन स्ट्रिंग में निर्दिष्ट है। इस विशेष मामले में, यह अनुप्रयोग कार्य फ़ोल्डर में test.db3 फ़ाइल में है।

  3. आप इसे एक्सेस करने के लिए हर बार इसे खोलने के महंगे ऑपरेशन से बचने के लिए डेटाबेस से कनेक्शन कैश करना चाहते हैं। साथ ही, मुझे यकीन नहीं है कि आपको लेनदेन की आवश्यकता क्यों है, क्योंकि आप जो कुछ भी करते हैं वह सिर्फ डेटाबेस से पढ़ा जाता है।

  4. आपके पास दो विकल्प हैं - या तो रिक्त डेटाबेस को रिक्त डेटाबेस के साथ स्टोर करें और इसे अपनी बिल्ड प्रक्रिया के दौरान आउटपुट डीआईआर में कॉपी करें; या डेटाबेस के पहले कनेक्शन पर अपने कोड से डेटाबेस के विरुद्ध निष्पादित करने के लिए SQL स्क्रिप्ट का एक सेट बनाएं। आप जो भी चुनते हैं वह इस बात पर निर्भर करता है कि क्या आप स्कीमा या अपनी बिल्ड प्रक्रिया बनाने के लिए अपना आवेदन ज़िम्मेदार होना चाहते हैं।

  5. आप precreated स्कीमा के साथ एक खाली डेटाबेस बनाते हैं, तो आप इसे अपने स्रोतों के साथ एक फ़ाइल के रूप में जोड़ सकते हैं और वी.एस. हिदायत उत्पादन निर्देशिका में कॉपी करना (जैसा कि मैंने पहले ही उल्लेख किया) कर सकते हैं।

+0

Q3 कोड नहीं मिल सकता है Thansk Franci - तुम मुझे जहां में VS2008 मैं "हिदायत वी.एस. करने की व्यवस्था होगी के लिए एक त्वरित सूचक दे ​​सकते हैं यह उत्पादन dir "में प्रतिलिपि? – Greg

+1

VS2005 में आप "समाधान एक्सप्लोरर" में फ़ाइल का चयन करके और में "गुण" बदलते संपत्ति "आउटपुट निर्देशिका को कॉपी" के लिए "कॉपी हमेशा" या "अगर नया कॉपी करें" ऐसा कर सकते हैं। VS2008 में यह एक ही होना चाहिए। – Agg

+0

हाँ, के रूप में @Agg ने कहा, आप इस समाधान एक्सप्लोरर में फ़ाइल गुण के माध्यम से करते हैं। –

2

मैं लगभग हमेशा इतनी का उपयोग कर का उपयोग करें:

using (DbConnection conn = new SQLiteConnection(...)) { 
    using (DbTransaction tran = conn.BeginTransaction()) { 
     using (DbCommand comm = conn.CreateCommand()) { 
      ... 
     } 
     tran.Commit(); 
    } 
    conn.Close(); 
} 

SQLite बनाने के प्रदर्शन आप सम्मिलित करें, अद्यतन के लिए लेन-देन का उपयोग करें और नष्ट करने के लिए है और आप paramaterized प्रश्नों का उपयोग करने के लिए है। श्रृंखलाबद्ध प्रश्नों बहुत धीमी कर रहे हैं: How do I get around the "'" problem in sqlite and c#?

संबंधित मुद्दे