Einfügen von null-Wert in der Datenbank
Ich habe eine Datenbank in MySQL-Workbench, wobei die Felder wie (name, Nachname, Alter, Adresse, etc..) und einer windows desktop-Anwendung (eine form) in visual studio mit c# wo können Sie einfügen, suchen und aktualisieren.
Wenn ich einfügen-Daten aus dem Formular und ich lasse einige Felder leer, werden Sie in der Datenbank gespeichert wie leer und ich möchte, dass Sie gerettet werden, als null.
Gibt es eine Möglichkeit, damit dies geschieht?
Hier ist und die Schaltfläche einfügen-code:
conn = openconnection.GetConn();
MySqlCommand cmd = new MySqlCommand("INSERT INTO table_name (name,lastname,address, etc...) VALUES (' " + name_textbox.Text + " ',' " + lastname_textbox.Text + " ' etc... );", conn);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
conn.Close();
Vielen Dank, es funktioniert gut, aber ich habe ein problem mit Worten mit Leerzeichen, wie: (Vater name Mutter name , etc). Wenn ich einen Wert einzugeben bei Namen ist es in Ordnung, aber wenn ich das einfügen eines Wertes bei der Vater-name oder Mutter-name ist null. Ich denke, es ist, weil der Abstand zwischen den Wörtern.
MySqlCommand cmd = new MySqlCommand("INSERT INTO table_name (name,`father name`,`mother name`, etc... VALUES (@name,@`father name`,@`mother name`,etc...);", conn);
cmd.Parameters.AddWithValue("@name", name_textbox.Text.NullString());
cmd.Parameters.AddWithValue("@`father name`", father_name_textbox.Text.NullString());
cmd.Parameters.AddWithValue("@`mother name`", mother_name_textbox.Text.NullString());
cmd.ExecuteNonQuery();
InformationsquelleAutor Chris | 2013-05-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine Möglichkeit wäre, einfach die interpretation, die auf Ihrem eigenen:
Jedoch möchte ich Ihnen eine weitere option:
Mit dieser Lösung werden Sie ordnungsgemäß entsorgt der connection-und command-Objekten, sondern Sie werden auch in der Lage sein, zu rationalisieren, die Zeichenfolge zu
null
Prozess und nutzen vorbereitete Abfragen, um die Prozess einfacher und sicherer, weil es nicht offen für SQL-Injection.HINWEIS: die statische Klasse, die Sie sehen, sollten Sie im eigenen
.cs
Datei.Tut
SqlParameterCollection.AddWithValue(name, value)
eine überlastung haben, die akzeptiert nur ein einziges argument?ja, du hast Recht, nur ein Tippfehler. Danke für den Fang, die habe ich bearbeitet, die Antwort!
Vielen Dank, ich versuche deine code aber in:
return string.IsNullOrEmpty(s) ? DBNull.Value : (object)s;
Zeile hab ich ein Fehler: kann Nicht implizit konvertiert Typ 'Objekt' zu 'string'. Eine explizite Konvertierung vorhanden ist (fehlt ein cast?) Ich versuchereturn string.IsNullOrEmpty(s) ? DBNull.Value : (object)s.ToString();
aber hat nicht funktioniert. Irgendeine Idee? Nochmals vielen Dank.bitte siehe mein edit für die Linie.
InformationsquelleAutor Mike Perrenoud
Benutze ich gerne diese praktische Funktion zu testen/einfügen
DBNull.Value
.Nützlich in anderen Orten, aber für deinen Fall:
Außerdem sollten Sie Ihre Anfälligkeit für SQL-injection-Angriffe und betrachten Sie die Parametrisierte SQL-Befehl.
InformationsquelleAutor Evan L
Obwohl die Spalten werden als Rohlinge in der Datenbank sind Sie eigentlich null. Sie können dies überprüfen, durch das Lesen dieser Felder in C# und vergleicht es mit dem System.DBNull.
null
.InformationsquelleAutor vikas rajan