/ / रूपांतरण स्ट्रिंग से तिथि और / या समय परिवर्तित करते समय रूपांतरण विफल - सी #, एसक्यूएल-सर्वर -2008

तिथि और / या चरित्र स्ट्रिंग से समय परिवर्तित करने पर रूपांतरण विफल - सी #, एसक्यूएल-सर्वर -2008

डेटाबेस में डेटा जोड़ने के दौरान date_to और date_from में त्रुटि दिखाई दे रही है। एसक्यूएल सर्वर डेटाबेस में दिनांक_to और date_from के लिए डेटा प्रकार दिनांक हैं। कुछ समाधान का सुझाव दें।

try
{
cmd = new SqlCommand("insert into license1 values(@l_id,@customer_id,@d_id,@device_name,@from,@to)", cn);

cmd.Parameters.AddWithValue("@l_id", license_id.Text);
cmd.Parameters.AddWithValue("@customer_id", c_comboBox4.Text);
cmd.Parameters.AddWithValue("@d_id", d_id_comboBox4.Text);
cmd.Parameters.AddWithValue("@device_name", d_name_comboBox5.Text);
cmd.Parameters.AddWithValue("@to", date_to.Text);
cmd.Parameters.AddWithValue("@from", date_from.Text);

cn.Open();
a = cmd.ExecuteNonQuery();
if (a > 0)
{
MessageBox.Show("Data Submitted");
}

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

उत्तर:

उत्तर № 1 के लिए 7

अपने हाथों में रूपांतरण ले लो:

cmd.Parameters.AddWithValue("@to", DateTime.Parse( date_to.Text));
cmd.Parameters.AddWithValue("@from", DateTime.Parse( date_from.Text));

और जब वह अभी भी विफल रहता है, तो इसका एक संस्करण उपयोग करें DateTime.ParseExact() उचित प्रारूप और संस्कृतिइन्फो के साथ।

आप एक और अधिक मजबूत और व्यापक सत्यापन परत जोड़ने पर विचार करना चाह सकते हैं। दिनांक और संख्या टाइपिंग त्रुटियों, उपयोगकर्ता सेटिंग्स और उपयोगकर्ता मान्यताओं के प्रति बहुत संवेदनशील हैं।

हमेशा मान लीजिए TextBox.Text त्रुटियों से भरा है।


जवाब के लिए 4 № 2

यदि उपयोगकर्ता दिनांक प्रारूप में प्रवेश करता है: yyyy-MM-dd फिर इसे आज़माएं:

String strDateFormat= "yyyy-MM-dd";//change accordingly if format is something different
DateTime to=DateTime.ParseExact(date_to.Text,strDateFormat, CultureInfo.InvariantCulture);
DateTime from=DateTime.ParseExact(date_from.Text, strDateFormat, CultureInfo.InvariantCulture);

cmd.Parameters.AddWithValue("@to", to);
cmd.Parameters.AddWithValue("@from", from);

जवाब के लिए 3 № 3

इसे इस्तेमाल करे

 cmd.Parameters.AddWithValue("@to",Convert.ToDateTime(date_to.Text));
cmd.Parameters.AddWithValue("@from",Convert.ToDateTime( date_from.Text});

जवाब के लिए 0 № 4

मुझे लगता है कि आपकी तिथि प्रारूप समस्या का कारण बन सकता है। आपको SQL प्रदाता द्वारा समर्थित दिनांक प्रारूप का उपयोग करना होगा। अधिकांश एसक्यूएल एमएम-डीडी-वाईय प्रारूप का उपयोग करता है। तो यदि आप 21-1-2014 पास करते हैं, तो SQL सर्वर इसे स्वीकार नहीं करता है क्योंकि 21 महीने का समय मौजूद नहीं है।