/ / Die Konvertierung ist fehlgeschlagen, wenn Datum und / oder Uhrzeit aus der Zeichenfolge c #, sql-server-2008 konvertiert werden

Die Konvertierung ist fehlgeschlagen, wenn Datum und / oder Uhrzeit aus der Zeichenfolge c #, sql-server-2008 konvertiert werden

Beim Hinzufügen von Daten zur Datenbank wird in date_to und date_from ein Fehler angezeigt. In der SQL Server-Datenbank sind die Datentypen für date_to und date_from Datum. eine Lösung vorschlagen.

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);
}

Antworten:

7 für die Antwort № 1

Nehmen Sie die Bekehrung selbst in die Hand:

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

und wenn dies immer noch fehlschlägt, verwenden Sie eine Version von DateTime.ParseExact() mit einem geeigneten Format und CultureInfo.

Möglicherweise möchten Sie eine robustere und umfassendere Validierungsschicht hinzufügen. Datums- und Zahlenangaben sind sehr empfindlich für Tippfehler, Benutzereinstellungen und Benutzerannahmen.

Immer annehmen TextBox.Text ist voller fehler.


4 für die Antwort № 2

wenn der Benutzer das Datumsformat eingibt als: yyyy-MM-dd dann versuche das:

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 für die Antwort № 3

Versuche dies

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

0 für die Antwort № 4

Ich denke, Ihr Datumsformat könnte das Problem verursachen. Sie müssen ein vom SQL-Provider unterstütztes Datumsformat verwenden. Die meisten SQL verwenden das MM-TT-JJJJ-Format. Wenn Sie also den 21-1-2014 bestehen, wird der SQL Server nicht akzeptiert, da der 21. Monat nicht vorhanden ist.