Es wird kein Datensatz in die Datenbank geschrieben.



  • Guten Morgen,

    Ich habe das Problem, dass kein Datensatz in die Datenbank geschrieben wird.
    Es wird auch keine Exception ausgelöst.

    try
          {
            con.Open();
    
            string sqlIns = "INSERT INTO DataBaseFTSD.Kunden (ID_Kunde, Anrede, Plattform, Vorname, Nachname, Strasse, Postleitzahl, Stadt, Land, Email, Telefon) VALUES (@ID_Kunde, @Anrede, @Plattform, @Vorname, @Nachname, @Strasse, @Postleitzahl, @Stadt, @Land, @Email, @Telefon)";
    
            SqlCommand command = new SqlCommand(sqlIns, con);
    
            int id;
            try
            {
              command.CommandText = "SELECT COUNT(*) FROM Kunden";
              id = (int)command.ExecuteScalar();
            }
            catch
            {
              id = 0;
            }
            command.Parameters.AddWithValue("@ID_Kunde", ++id);
    
            command.Parameters.AddWithValue("@Anrede", comboBoxNeuAnrede.SelectedItem.ToString());
            command.Parameters.AddWithValue("@Plattform", textBoxNeuPlattform.Text);
            command.Parameters.AddWithValue("@Vorname", textBoxNeuVorname.Text);
            command.Parameters.AddWithValue("@Nachname", textBoxNeuNachname.Text);
            command.Parameters.AddWithValue("@Strasse", textBoxNeuStrasse.Text);
            command.Parameters.AddWithValue("@Postleitzahl", textBoxNeuPostleitzahl.Text);
            command.Parameters.AddWithValue("@Stadt", textBoxNeuStadt.Text);
            command.Parameters.AddWithValue("@Land", textBoxNeuLand.Text);
            command.Parameters.AddWithValue("@Email", textBoxNeuEmail.Text);
            command.Parameters.AddWithValue("@Telefon", textBoxNeuTelefon.Text);
    
            command.ExecuteNonQuery();
            command.Dispose();
            command = null;
    
          }
          catch (Exception ex)
          {
            MessageBox.Show(ex.Message);
          }
          finally
          {
            con.Close();
            con.Dispose();
          }
    

    Hat vielleicht jemand nen Tip ?



  • Was soll das denn werden? Überlege dir mal, was in command.CommandText drinsteht, wenn ExecuteNonQuery() ausgeführt wird.

    Warum verwendest du denn kein Autoincrement für die Id?



  • Ich habe irgendwie nix gefunden wo ich Autoincrement nutzen kann. Wo stell ich das ein?

    Mist, hab die eine Zeile total übersehen :(. Typisch Zeile 13


  • Administrator

    Fantoma555 schrieb:

    Mist, hab die eine Zeile total übersehen :(. Typisch Zeile 13

    Das Hauptproblem dürfte vor allem sein, dass du keine saubere Trennung auf Funktionen hast. Das was du in Zeile 11 bis 19 machst, könntest du sehr gut auch in einer externen Funktion erledigen. Dort hättest du ein eigenes SqlCommand erstellt und es wäre gar nie zu diesem "Konflikt" gekommen.

    Das auto increment stellst du übrigens in der Datenbank ein, bzw. der Tabelle. Wenn du dann einen Wert einfügst und keine ID angibst, wird diese automatisch für dich erstellt.

    Grüssli



  • Ich habs jetzt mal ein wenig umgeschrieben. Geht natürlich nicht.

    Fehlermeldung:

    Der Wert NULL kann in die 'ID_KUNDE'-SPalte ... nicht eingefügt werden.
    Die Spalte lässt NULL-Werte nicht zu. Fehler bei Insert.
    Die Anweisung wurde beendet
    

    Ich finde nichts in der Tabelle wo ich autoincrement eintragen kann 😮

    try
          {
    
            SqlConnection con = new SqlConnection(connectionString);
    
            con.Open();
    
            string sqlIns = "INSERT INTO Kunden (Anrede, Plattform, Vorname, Nachname, Strasse, Postleitzahl, Stadt, Land, Email, Telefon) VALUES ( @Anrede, @Plattform, @Vorname, @Nachname, @Strasse, @Postleitzahl, @Stadt, @Land, @Email, @Telefon)";
    
            SqlCommand command = new SqlCommand(sqlIns, con);
    
            command.CommandText = sqlIns;
    
            command.Parameters.AddWithValue("@Anrede", comboBoxNeuAnrede.SelectedItem.ToString());
            command.Parameters.AddWithValue("@Plattform", textBoxNeuPlattform.Text);
            command.Parameters.AddWithValue("@Vorname", textBoxNeuVorname.Text);
            command.Parameters.AddWithValue("@Nachname", textBoxNeuNachname.Text);
            command.Parameters.AddWithValue("@Strasse", textBoxNeuStrasse.Text);
            command.Parameters.AddWithValue("@Postleitzahl", textBoxNeuPostleitzahl.Text);
            command.Parameters.AddWithValue("@Stadt", textBoxNeuStadt.Text);
            command.Parameters.AddWithValue("@Land", textBoxNeuLand.Text);
            command.Parameters.AddWithValue("@Email", textBoxNeuEmail.Text);
            command.Parameters.AddWithValue("@Telefon", textBoxNeuTelefon.Text);
    
            command.ExecuteNonQuery();
            con.Close();
            con.Dispose();
    
          }
          catch (Exception ex)
          {
            MessageBox.Show(ex.Message);
          }           
        }
    


  • OK, Das mit dem Autoincrement hab ich jetzt. Nun fehlt nur noch das Schreiben in die Datenbank. Jemand nen Tip wie ich das hinbekommen?


  • Administrator

    Fantoma555 schrieb:

    Nun fehlt nur noch das Schreiben in die Datenbank. Jemand nen Tip wie ich das hinbekommen?

    Was geht denn immer noch nicht? 😕

    Grüssli



  • Habs hinbekommen. War eigentlich alles richtig, Das Problem war nur das, wenn ich das Programm in Visual Studio starte, er die Datenbank immer kopiert und mit dieser arbeitet und sobald das Programm neu gestartet wird er nicht die Inhalte in die alte Datenbank schreibt sondern in der zur laufzeit kopierten Datenbank und ich somit immer dachte das er gar nix reinschreibt. Hoffe es war soweit verständlich. Danke 👍


Anmelden zum Antworten