2012-11-27 26 views
20

मैं दृश्य स्टूडियो में एक सी # खिड़कियों प्रपत्र आवेदन बना रही हूँ 2010MySqlCommand Command.Parameters.Add अप्रचलित

आवेदन एक mysql डेटाबेस से कनेक्ट कर रहा है यही कारण है कि, और मैं इसे में डेटा सम्मिलित करना चाहते है।

MySqlConnection connection; 
string cs = @"server=server ip;userid=username;password=userpass;database=databse"; 
connection = new MySqlConnection(cs); 
connection.Open(); 

MySqlCommand command = new MySqlCommand(); 
string SQL = "INSERT INTO `twMCUserDB` (`mc_userName`, `mc_userPass`, `tw_userName`, `tw_userPass`) VALUES ('@mcUserName', '@mcUserPass', '@twUserName', '@twUserPass')"; 
command.CommandText = SQL; 
command.Parameters.Add("@mcUserName", mcUserNameNew); 
command.Parameters.Add("@mcUserPass", mcUserPassNew); 
command.Parameters.Add("@twUserName", twUserNameNew); 
command.Parameters.Add("@twUserPass", twUserPassNew); 
command.Connection = connection; 
command.ExecuteNonQuery(); 
connection.Close(); 

कनेक्शन ठीक है:

अब मैं कोड के इस हिस्से की क्या ज़रूरत है। यह काम करता है।

मैंने here पढ़ा है कि जिस तरह से मेरे पास है, क्वेरी करने के लिए एक सहेजने का तरीका है। क्या यह अभी भी सही है?

और अब वास्तविक प्रश्न के लिए। इसके बाद के संस्करण है कि कोड के साथ, मैं दृश्य स्टूडियो में निम्न चेतावनी मिलती है:

'MySql.Data.MySqlClient.MySqlParameterCollection.Add(string, object)' is obsolete: '"Add(String parameterName, Object value) has been deprecated. Use AddWithValue(String parameterName, Object value)"' 

चेतावनी हर parameters.add

के लिए है और यह भी काम नहीं कर रहा है, क्योंकि मानों डाला जाता हैं @mcUserName , @mcUserPass और इतने पर, वैरिएबल mcUserNameNew और इतने पर मानों के बजाय ...

तो मेरा सवाल है, क्या मैं कुछ गलत कर रहा हूं, और एसक्यूएल इंजेक्शन सेव करने का नया तरीका क्या है क्वेरी?

+3

उपयोग 'AddWithValue' में जोड़े के रूप में चेतावनी – Habib

+0

@Habib में सुझाव दिया, किया, चेतावनी चले गए हैं, लेकिन अभी भी नहीं DB में सही मूल्य ...] – Mathlight

उत्तर

24

AddWithValue

command.Parameters.AddWithValue("@mcUserName", mcUserNameNew); 
command.Parameters.AddWithValue("@mcUserPass", mcUserPassNew); 
command.Parameters.AddWithValue("@twUserName", twUserNameNew); 
command.Parameters.AddWithValue("@twUserPass", twUserPassNew); 

कोशिश करते हैं और सिंगल कोट्स के साथ प्लेसहोल्डर लपेट नहीं है।

string SQL = "INSERT INTO `twMCUserDB` (`mc_userName`, `mc_userPass`, `tw_userName`, `tw_userPass`) VALUES (@mcUserName, @mcUserPass, @twUserName, @twUserPass)"; 
+0

हो गया, चेतावनियां चली गईं, लेकिन अभी भी डीबी में सही डेटा नहीं है ... – Mathlight

+3

और मूल्य को एकल कोट के साथ लपेटें नहीं। मेरे अपडेट –

+0

देखें कि यह चाल है। धन्यवाद – Mathlight

0

@mcUserName क्वेरी में mc_userName से मेल खाना चाहिए ..

तो अपने parm @mc_userName

+0

जेडब्ल्यू ने पहले ही इसे ठीक कर दिया है, हालांकि आपका उत्तर सच हो सकता है ... – Mathlight

-1

यह वह जगह है VB कोड ...

cmd.Parameters.AddWithValue("@number", 1) 'set @number as numeric 
cmd.Parameters.AddWithValue("@text", "this will be a text variable") 

cmd.Parameters("@number").Value = 321 'now @number has a value 
cmd.Parameters("@text").Value = "A string value" 'now @text has a value 

cmd.ExecuteNonQuery() 
+0

मुझे लगता है कि आपको लगता है कि आपको पैरामीटर नाम के चारों ओर स्क्वायर ब्रैकेट का उपयोग करना चाहिए ताकि 'cmd.Parameters ["@ number"]। Value = 321' –

0

बस संपादित किया जाना चाहिए/इस भाग में कुछ कोड हटाएं

('@mcUserName', '@mcUserPass', '@twUserName', '@twUserPass') 

(@mcUserName, @mcUserPass, @twUserName, @twUserPass) 

और (AddWithValue (

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

  • कोई संबंधित समस्या नहीं^_^