2010-11-19 13 views
0

Ich habe eine Windows-Formularanwendung, die mit einer entfernten Datenbank interagiert. Die Datenbank enthält 2 Tabellen.MySQL Datenformatierung mit C# (Datum) und DateTimePicker

Ein Benutzer kann Datum in MaskedTextBox eingeben und dann Datensatz aktualisieren, indem Sie auf die Schaltfläche klicken und die Anweisung ausgeben. Allerdings ist es nervig, die maskedtextbox zu verwenden, da die MySQL Date-Spalten das Format YYYY-MM-DD haben. Also muss der Benutzer zum Beispiel 2010-11-15 in das maskierte Textfeld eingeben, damit es funktioniert (das funktioniert, aber es ist nicht so intuitiv in dieses Format einzugeben). Ich möchte stattdessen einen DateTimePicker verwenden, aber da diese "text" -Eigenschaft steuert, gibt das Format DD-MM-YYYY, wenn ich in Zeichenfolge string es aussieht wie 15-11-2010. Das MySQL verarbeitet das offensichtlich nicht korrekt.

Was ist der beste Weg, dies zu handhaben, sollte ich die 3 Sätze von Zahlen (Tag, Monat, Jahr) von Datetimepicker.text analysieren? Oder gibt es eine Möglichkeit, das tatsächliche Format des MySQL-Datums zu ändern? Oder könnte ich die SQL-Anweisung bearbeiten, so dass ich das Format des Rückgabedatums ändere? Hier

ist die SQL-Anweisung verwende ich im Falle seiner missbräuchlichen Nutzung:

commandinsert.CommandText = "insert into jobs (id,date) values ('" + comboBox1.Text + "','" + maskedTextBox1.Text + "')"; 

Vielen Dank im Voraus.

+0

Sie eine SQL-Injection-Schwachstelle haben. – SLaks

Antwort

1

Sie sollten die Texte mit Parametern übergeben.
Sie können dann die Eigenschaft SelectedDate des DateTimePicker direkt als Parameter übergeben, und der MySQL-Client sendet die korrekten Daten.

Dies verhindert auch einen SQL-Injection-Angriff.

Weitere Informationen finden Sie here

Verwandte Themen