Autor Beitrag
lisa5001
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 23.03.17 09:07 
Guten Tag.
Ich hätte eine Frage zu meinem Btn Insert. Ich möchte Daten von einer anderen Form, in der sich textboxen befinden einfügen. Also einen neuen Datensatz einfügen.

Leider zeigt es weder einen Fehler an, aber es funktioniert auch nicht.....
Hier mein Code des Buttons:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
private void btn_insert_Click(object sender, EventArgs e)
{
    Dlg_Insert meinDialog = new Dlg_Insert();
    DialogResult dialog = meinDialog.ShowDialog();

    string connectionstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Kundendaten.accdb";
    OleDbConnection con;
    con = new OleDbConnection(connectionstring);

    con.Open();
    if (DialogResult == DialogResult.OK)
    {
        string sql = "INSERT INTO Kundendaten (Name, Adresse, E-Mail, Passwort) VALUES ('" + meinDialog.GetName() + "', '" + meinDialog.GetAddresse() + "', '" + meinDialog.GetEmail() + "')";

        OleDbCommand cmd = new OleDbCommand(sql, con);

        cmd.ExecuteNonQuery();
        con.Close();
}

Ich bitte euch um Vorschläge dafür?

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 23.03.17 09:58 
Hallo und :welcome:,

was genau funktioniert nicht, d.h. wie überprüfst du, ob Daten in die Datenbank geschrieben werden?

Und bitte packe demnächst deinen Code in passende C#-Tags (unter "Bereiche").
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Do 23.03.17 10:06 
Hallo Lisa,

Auf den 1. Blick fallen mir 3 Dinge auf, die du tun solltest.

1. Fange mögliche Exceptions (= während der Laufzeit auftretene Fehler) mit try-catch ab und lass dir die Fehlermeldung anzeigen.
2. Du solltest deine Connection auch nur öffnen, wenn dass erwünscht ist (--> also hier mit in den if-Block mit rein) und dann dafür sorgen, dass Sie auch geschlossen wird.
3. In deiner if-Bedingung verwendest du nicht die DialogResult-Variable dialog

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
private void btn_insert_Click(object sender, EventArgs e)
{
    Dlg_Insert meinDialog = new Dlg_Insert();
    DialogResult dialog = meinDialog.ShowDialog();

    string connectionstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Kundendaten.accdb";
    
    if (dialog == DialogResult.OK)
    {
        using (OleDbConnection con = new OleDbConnection(connectionstring))     // erstellt eine neue OleDbConnection, mit dem Vorteil, dass diese auch aufjedenfall wieder geschlossen wird
        {
            try 
            {
                con.Open();       // --> mögliche Fehlerquelle
                string sql = "INSERT INTO Kundendaten (Name, Adresse, E-Mail, Passwort) VALUES ('" + meinDialog.GetName() + "', '" + meinDialog.GetAddresse() + "', '" + meinDialog.GetEmail() + "')";
                OleDbCommand cmd = new OleDbCommand(sql, con);
                cmd.ExecuteNonQuery();     // --> mögliche Fehlerquelle
            }
            catch (Exception ex) 
            {
                // Fängt die Fehlermeldung ab und gibt Sie aus
                MessageBox.Show(ex.Message);
            }
        }
    }
}

Also poste die Fehlermeldung, wie Th69 schon sagte.

Gruß
Julian
lisa5001 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 23.03.17 11:53 
Ja das dialog war der Fehler, hab ich dann selbst gemerkt, jetzt funktioniert es! :)
Danke vielmals :)

Moderiert von user profile iconTh69: Vollzitat entfernt.
Moderiert von user profile iconTh69: C#-Tags hinzugefügt