Fallback Lösung Datenbank Abfrage c#

werner_sg

Erfahrenes Mitglied
Hallo,

der folgende Code schreibt Daten in meine Access Datenbank zurück und funktioniert auch soweit.

Wird aber nun ein Feld nicht ausgefüllt, erhalte ich einen Fehler daß das Datenformat Fehlerhaft ist, wie baue ich mir nun am besten eine Lösung um den Fehler abzufangen.

C#:
        private void button11_Click_1(object sender, EventArgs e)
        {
            tb_Betrag.Text = System.Convert.ToString(System.Convert.ToDouble(tb_Betrag.Text));
            tb_Nummer.Text = System.Convert.ToString(System.Convert.ToDouble(tb_Nummer.Text));
            tb_Kredit.Text = System.Convert.ToString(System.Convert.ToDouble(tb_Kredit.Text));

            sql.CommandText = "insert into Guthaben(Kartennummer,Betrag,Kunde,Kreditlinie) values ('" + tb_Nummer.Text + "' , '" + tb_Betrag.Text + "'  , '" + tb_Name.Text + "'  , '" + tb_Kredit.Text + "')";
            sql.ExecuteNonQuery();

            MessageBox.Show("Karte erfolgreich freigeschaltet");

            this.Controls.Clear();
            this.InitializeComponent();


        }

mit bestem Dank Werner
 
Einerseits könntest du das Feld so deklarieren das es auch "leere" werte erlaubt.

Ansonsten den SQL String dynamisch aufbauen.

Ungefähr so (nicht getestet):
C#:
Dictionary<string, string> felderWerte =new Dictionary<string, string>(); //Key: Spalte, Value: Wert
if(!string.isNullOrEmpty(tb_Nummer.Text))
    felderWerte.Add("Kartennummer", "'" + tb_Nummer.Text + "'");
if(!string.isNullOrEmpty(tb_Betrag.Text))
    felderWerte.Add("Betrag", "'" +tb_Betrag..Text + "'");

string sql="insert into Guthaben(" + string.Join(", ", felderWerte.Keys) + ") values (" + string.Join(", ", felderWerte.Values) + ")";
 
Zurück