2010-11-10 13 views
5

में एकाधिक सम्मिलन बयान मैं एक डीबी में एकाधिक पंक्तियां डाल रहा हूं, और प्रदर्शन में सुधार के प्रयास में उन्हें एक साथ जोड़ रहा हूं। मुझे एक ओडीबीसीएक्सप्शन मिलता है जो मुझे बता रहा है कि मेरा एसक्यूएल सिंटैक्स गलत है। लेकिन जब मैं इसे mysql कमांडलाइन क्लाइंट में आज़माता हूं, तो यह ठीक काम करता है .. मैंने प्रक्रिया का वर्णन करने के लिए एक सरल परीक्षण चलाया।एकल ओडीबीसी ExecuteNonQuery (सी #)

कमांड लाइन ग्राहक:


mysql> create table test (`id` int, `name` text); 
Query OK, 0 rows affected (0.05 sec) 

mysql> INSERT INTO test(id, name) VALUES ('1', 'Foo');INSERT INTO test(id, name) VALUES ('2', 'bar'); 
Query OK, 1 row affected (0.00 sec) 

Query OK, 1 row affected (0.00 sec) 

mysql> 

उसके बाद मैं एक ही डीबी पर इस कोड को भाग गया:


comm.CommandText = "INSERT INTO test(id, name) VALUES ('1', 'Foo');INSERT INTO test(id, name) VALUES ('2', 'bar');"; 
comm.ExecuteNonQuery(); 

जो मुझे निम्न त्रुटि देता है:


+  base {"ERROR [42000] [MySQL][ODBC 5.1 Driver][mysqld-5.1.51-community]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO test(id, name) VALUES ('2', 'bar')' at line 1"} System.Data.Common.DbException {System.Data.Odbc.OdbcException} 

उत्तर

5

हां, ओडीबीसी बैच प्रोसेसिंग का समर्थन नहीं करता है।

लेकिन वहाँ एक और विकल्प है:

  1. उपयोग ODBC के बजाय MySQL .NET Connector
  2. फिर MySQL विकल्प INSERT कथन का उपयोग करें: INSERT INTO test(id, name) VALUES ('1', 'Foo'), ('2', 'bar');
1

यह नहीं संभाल कर सकते हैं बैचिंग (एकाधिक कथन अलग करने के लिए;); इसके लिए दो तरह के संचार की आवश्यकता होगी। मुझे डर है कि आपको इसे लूप में करना है और कई बार डेटाबेस जाना है।

वास्तव में मैं किसी भी कामयाब प्रदाता के साथ बैचिंग उपयोग करने में सक्षम कभी नहीं किया गया है।

8

बैचिंग वास्तव में MySQL ओडीबीसी ड्राइवर v5 + द्वारा समर्थित है, आपको केवल ओडीबीसी नियंत्रण कक्ष (यदि विंडोज़ पर) के विवरण बटन पर क्लिक करना है और "एकाधिक कथनों की अनुमति दें" चेकबॉक्स को चेक करना है।

वैकल्पिक रूप से, odbc कनेक्शन स्ट्रिंग पर OPTIONS = 67108864 का उपयोग करता है।

अधिक जानकारी यहां: http://dev.mysql.com/doc/refman/5.0/en/connector-odbc-configuration-connection-parameters.html

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