c# Excel आयात त्रुटि में प्रवेश करने के लिए




asp.net winforms (2)

आपका कनेक्शन स्ट्रिंग आपके द्वारा अनुसरण किए जा रहे संदर्भ से मेल नहीं खाता है:

आपका कनेक्शन स्ट्रिंग:

 string connect = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\exportdb\DestinationDB.mdb;";

उसका कनेक्शन स्ट्रिंग विस्तारित गुण है और एक्सेल 8.0 निर्दिष्ट कर रहा है:

string connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Excel +";Extended Properties=Excel 8.0;";

दूसरी समस्या यह है कि आपका डाटासॉर्स एक्सेस डाटाबेस डेस्टिनेशन डीबी.एमडीबी है, ध्यान दें कि आप जिस संदर्भ का अनुसरण कर रहे हैं वह Excel को डेटा स्रोत के रूप में निर्दिष्ट करता है।

उद्देश्य: एमएस एक्सेस (.एमडीबी) डाटाबेस के लिए एक्सेल से डेटा आयात करने के लिए

संदर्भ: https://www.mikesdotnetting.com/article/79/import-data-from-excel-to-access-with-asp-net

प्रौद्योगिकी: सी #। नेट विंडोज फॉर्म

त्रुटि: "माइक्रोसॉफ्ट जेट डेटाबेस इंजिन इनपुट तालिका या क्वेरी 'व्यक्तियों $' नहीं मिल सकता है। सुनिश्चित करें कि यह मौजूद है और इसका नाम सही वर्तनी है।"

कोड:

 private void button6_Click(object sender, EventArgs e)
        {
            string Access = @"c:\exportdb\DestinationDB.mdb";
            string connect = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\exportdb\DestinationDB.mdb;";

            using (OleDbConnection conn = new OleDbConnection(connect))
            {
                using (OleDbCommand cmd = new OleDbCommand())
                {
                    cmd.Connection = conn;
                    cmd.CommandText = "INSERT INTO [MS Access;Database=" + Access + "].[Persons] SELECT * FROM [Persons$]";
                    conn.Open();
                    cmd.ExecuteNonQuery();
                }
            }
        }

नोट : मैंने निम्न क्षेत्रों के साथ "व्यक्तियों" के रूप में तालिका नाम के साथ "DestinationDB.mdb" नामक एक एमएस एक्सेस डेटाबेस बनाया है: ContactID, FirstName, SecondName, आयु

इसके बाद मैंने हेडर स्ट्रक्चर को बनाए रखने के लिए एक्सेल को निर्यात किया है।

एक बार जब यह एक्सेल निर्यात किया जाता है, तो मैंने इसे मैन्युअल रूप से कुछ 10 रिकॉर्ड जोड़े।

दोनों फाइलें "c: //exportdb/source.xls" और "c: //exportdb/DestinationDB.mdb" के अंतर्गत स्थित हैं।

एक्सेल स्नैपशॉट:

एमएस एक्सेस स्नैपशॉट:

कृपया ऊपर वर्णित त्रुटि को हल करने के लिए कृपया मेरी मदद करें

धन्यवाद!


त्रुटि सही लगता है ऐसा प्रतीत होता है कि व्यक्ति $ स्प्रेडशीट में है लेकिन आपने डेटाबेस से एक कनेक्शन खोला है (आप "से चयन में डालें" नहीं कर सकते क्योंकि वे समान डेटाबेस में नहीं हैं या लिंक किए गए हैं)। आपको दोनों के लिए एक कनेक्शन खोलने की आवश्यकता होगी (फिर एक क्वेरी करें, दूसरे में डालें) नीचे छद्म कोड की तरह कुछ काम करेगा:

1.) एक्सेस डेटाबेस जैसे आपके पास एक कनेक्शन खोलें।

2.) स्प्रेडशीट के लिए एक अलग कनेक्शन खोलें।

3.) स्प्रेडशीट में $ $ व्यक्तियों की पूछताछ करें, वापसी का कहना है कि एक DataReader (ExecuteReader)।

4.) DataReader पर विस्फोट और प्रत्येक पंक्ति (एक्सेस डेटाबेस में डालने) के लिए एक प्रविष्टि विवरण चलाएं। एसक्यूएल इंजेक्शन / चीजों से बचने के लिए इसके लिए एक पैरामीलेटेड स्टेटमेंट का प्रयोग करें, जो अनजाने में एसक्यूएल को गड़बड़ कर देगा। आप एक डेटा स्रोत से बात कर रहे हैं और रिकॉर्ड के द्वारा दूसरे रिकॉर्ड में प्रवेश कर रहे हैं।

अगर आप इसे रिकॉर्ड किए गए पूरे बैच में चिंतित हैं, तो कोई भी लेन-देन और रोलबैक का उपयोग करें, अगर कोई त्रुटि हो यह सुनिश्चित करेगा कि आप सभी या कुछ भी नहीं मिले





ado.net