Ich erstelle zurzeit eine Anwendung, um Daten aus DataGridView in Oracle 11g zu importieren. Mein Problem ist, wenn zum Beispiel die Spalte REPORTING_OUTBOUND_DATE leer ist, dann bekomme ich die Fehlermeldung > Fehlermeldung:
System.FormatException: "Die Zeichenkette wurde nicht als gültige DateTime erkannt". Wie kann ich diese Fehler beheben und AM WICHTIGSTEN überhaupt? Gibt es eine Möglichkeit, alles besser zu programmieren? Danke
private void Btn_SAVE_IN_DATABASE_VEUPEN_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView2.Rows.Count - 1; i++) //Schleife für INSERT Befehl
{
OracleConnection con = new OracleConnection("Data Source=(***********************");
con.Open();
string sql = "INSERT INTO AFTERSALES.INPUT_BOARDLEVEL_REPAIR_VEUPEN (BLR_REPORT_DATE, MONTH_OF_REPAIR_END, PCB_COUNTER, MANUFACTURER, REPORTING_OUTBOUND_DATE, EMPTY, QTY)"
+ "VALUES (:BLR_REPORT_DATE, :MONTH_OF_REPAIR_END, :PCB_COUNTER, :MANUFACTURER, :REPORTING_OUTBOUND_DATE, :EMPTY, :QTY)";
OracleCommand cmd = new OracleCommand(sql, con);
cmd.Parameters.Add(":BLR_REPORT_DATE", Convert.ToDateTime(dataGridView2.Rows[i].Cells[0].Value).ToString("dd.MM.yyyy"));
cmd.Parameters.Add(":MONTH_OF_REPAIR_END", dataGridView2.Rows[i].Cells[1].Value);
cmd.Parameters.Add(":PCB_COUNTER", dataGridView2.Rows[i].Cells[2].Value);
cmd.Parameters.Add(":MANUFACTURER", dataGridView2.Rows[i].Cells[3].Value);
cmd.Parameters.Add(":REPORTING_OUTBOUND_DATE", Convert.ToDateTime(dataGridView2.Rows[i].Cells[4].Value).ToString("dd.MM.yyyy"));
cmd.Parameters.Add(":EMPTY", dataGridView2.Rows[i].Cells[5].Value);
cmd.Parameters.Add(":QTY", dataGridView2.Rows[i].Cells[6].Value);
cmd.ExecuteNonQuery();
con.Close();
}
}
Wie kann ich diese Fehler beheben und AM WICHTIGSTEN überhaupt? Gibt es eine Möglichkeit, alles besser zu programmieren? Danke
Ja, dich mit den Grundlagen der Databinding zu beschäftigen.
Das ganze "ach ich lerne besser wenn ich alles gleich ausprobiere" führt immer zu mehr Frust als alles andere.
Erstelle also eine Klasse die deine Daten representiert,
Erstelle eine (Binding)List<DeineKlasse> und binde diese ans DGV.
Wie Dir bereits mehrfach in anderen Threads geantwortet wurde:
[Artikel] Drei-Schichten-Architektur
[Artikel] MVVM und DataBinding
Ansonsten stimme ich FZelle zu: das hier ist pures gefrickel.
Das Erlernen von Grundlagen ist hier aller höchste Eisenbahn, bevor solch eine Software auch nur annähernd zu einem Benutzer kommt.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code