Zitat:
Zitat von Phil Code: cmd.CommandText = "INSERT INTO Klassen (m_ID, m_KName, m_KArt) VALUES(" + k.getm_KID(); "','" + k.getm_KName() + "','" + k.getm_KArt() + "')";
so sollte es funktionieren. Du hattest zu viele Semikolons hintereinander, wie du ja sicherlich weisst wird durch ein Semikolon eine Anweisung eindeutig abgeschlossen. |
Dies hat aber zwei Proleme:
1. Wenn einer der String selbst ein ' enthält, wird eine exception ausgelöst. Oder in einem noch schlimmeren Fall, manipuliert jemand per SQL-Injection die Daten. Jenach Anwendungsbereich ist dies recht gefährlich.
2.Wenn die Strings leer sind, müsste eigentlich nicht '' eingefügt werden sondern NULL (ohne ' ). Jetzt kommt es aber noch auf die Datenbank an die dahintersteht. Evt. ist es der DB egal, evt. gibt es ein Fehler oder es ist eben doch nicht so wahr was ich nun eben geschrieben habe.
Ich würde es darum etwa so machen:
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = AllePersonen.getInstanz().getOpenConnection();
cmd.CommandText = "INSERT INTO Klassen (m_ID, m_KName, m_KArt) VALUES(?,?,?)";
cmd.Parameters.Add("m_KID", OleDbType.Integer) = k.getm_KID;
cmd.Parameters.Add("m_KName", OleDbType.VarChar) = k.getm_KName;
cmd.Parameters.Add("m_KArt", OleDbType.VarChar) = k.getm_KArt;
cmd.ExecuteNonQuery();
gruss