2016-03-22 9 views
9

मैं phpAdmin पर डाटाबेस से एक पंक्ति क्वेरी ठीक काम कर रहा है हटाने के लिए प्रयास करते हैं, लेकिन जब मैंMySqlException

कोड के साथ यह निष्पादित करें:

MySqlCommand getUserID = new MySqlCommand("SELECT UserID FROM User", connection); 

MySqlDataReader reader = getUserID.ExecuteReader(); 

:

मैं

त्रुटि प्राप्त

मैं किसी भी परेशानी के बिना उपयोगकर्ता को हटाने के लिए सम्मिलित करता हूं।

डाटाबेस गुण Unique, Int (लंबाई 9) और Auto-Increment के साथ एक UserID और एक UserName प्रकार चार से है।

मेरा प्रश्न है:

मैं userID क्यों प्राप्त नहीं कर सकता और मैं इसे कैसे प्राप्त कर सकते हैं?

संपादित

मैं केवल varchar किसी भी पूर्णांक या तारीख डेटा प्राप्त नहीं कर सकता। Creation Query

+0

अपने डेटा कितना बड़ा है:समस्या है कि यह भी अपवाद का मतलब है, डाटाबेस MySqlConnection प्राप्त नहीं कर सकते इंट या दिनांक मूल्यों अगर वे अहस्ताक्षरित नहीं हैं? तालिका में कितने उपयोगकर्ता हैं? – Ian

+0

इसकी एक छोटी सी तालिका 20 मूल्य – SeeuD1

+1

"गैर क्वेरी" के लिए एक चुनिंदा है? 'गंभीरता से? आप जानते हैं कि "SELECT" प्रति परिभाषा एक प्रश्न है? ExecuteNonQuery उन चीजों के लिए है जो डेटा वापस नहीं कर रहे हैं (जैसे अद्यतन, हटाएं)। – TomTom

उत्तर

3

"Destination array is not long enough to copy all the items in the collection. Check array index and length."

4

अपवाद मतलब है कि आप एक अप्रत्याशित परिणाम हो रही है:

यहाँ डाटाबेस निर्माण क्वेरी है। विधि ExecuteNonQuery कोई क्वेरी निष्पादित करने का प्रयास करता है जो कोई पंक्ति नहीं देता है, और डेटाबेस में संपादित पंक्तियों की मात्रा प्रदर्शित करने वाला एक पूर्णांक देता है। तो यह परिणामों की सरणी को एक पूर्णांक फ़ील्ड में डालने का प्रयास कर रहा है, जो संभव नहीं है।

तो अपने प्रश्न का उत्तर देने के लिए, त्रुटि का कारण क्वेरी है। चुनिंदा प्रश्नों के लिए आपको ExecuteReader() विधि का उपयोग करना चाहिए।

4

सबसे पहले के बाद से आप एक ही मान प्राप्त करना चाहते हैं (UserID) आप ExecuteScalar यहाँ इस्तेमाल कर सकते हैं:

MySqlCommand getUserID = new MySqlCommand("SELECT UserID FROM `User`", connection); 
connection.Open(); 
int userId = (int)getUserID.ExecuteScalar(); 
connection.Close(); 

दूसरेUser एक reserved keyword है, तो आप तालिका नाम के आसपास बैकटिक उपयोग करने की आवश्यकता इसे स्पष्ट करने के लिए:

MySqlCommand getUserID = new MySqlCommand("SELECT UserID FROM `User`", connection);