Laden...

Bester Weg um Daten von DataGridView in Oracle 11g zu importieren

Erstellt von der_sharky vor 5 Jahren Letzter Beitrag vor 5 Jahren 936 Views
D
der_sharky Themenstarter:in
23 Beiträge seit 2017
vor 5 Jahren
Bester Weg um Daten von DataGridView in Oracle 11g zu importieren

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


F
10.010 Beiträge seit 2004
vor 5 Jahren

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.

  1. NIEMALS daten in ein control hineinfrickeln
  2. Immer typisiert arbeiten.
  3. Grundlagen, Grundlagen, Grundlagen.

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.

16.806 Beiträge seit 2008
vor 5 Jahren

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.