einfügen textbox-Werte in die Datenbank
ich bin ein Neuling hier und würde gerne einige Ratschläge über die C# - Programmierung
ich würde gerne speichern, Werte aus einem Textfeld in eine Datenbank.
bisher habe ich die folgenden:
string connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Customers.mdf;Integrated Security=True;User Instance=True";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO ProjectList (ProjectName, BiddingDueDate, Status, ProjectStartDate, ProjectEndDate, AssignedTo, PointsWorth, StaffCredits) VALUES ('"+projName+"', '"+bidDueDate+"', '"+status+"', '"+projectStartDate+"', '"+projectEndDate+"', '"+assignedTo+"', '"+pointsWorth+"', '"+aStaffCredits+"')";
SqlCommand command = new SqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
Gibt es keine Fehler im code, aber ich kann nicht scheinen, um herauszufinden, warum wird nichts in der Datenbank gespeichert.
Die Variablen, die Sie verwenden, sind die im Textfeld name oder string-Wert?
InformationsquelleAutor jill | 2010-11-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, die Ihr code ist reif für SQL-Injection-Angriffe - Sie sollte wirklich mit parametrisierten Abfragen.
Auch, wenn Sie Parameter verwenden, können Sie einige geben Sicherheit, und die Werte werden korrekt übersetzt zu SQL Server.
Ist es schwierig zu sagen, was ist hier falsch, da die Werte, die Sie verketten uns unbekannt ist (zum Beispiel, was bedeutet
bidDueDate
Aussehen?, Was bedeutetthisQuery
Aussehen, bevor Sie es ausführen?).Ich würde normalerweise schreiben diese als eine gespeicherte Prozedur, wobei die Parameter müssen Sie für das einfügen eines Datensatzes, in meinem C# würde ich das erstellen des command-Objekts fügen Sie die richtigen Parameter (und-Typen).
Siehe das Beispiel auf diese MSDN-Seite (SqlCommand.Parametern).
+1 für Bobby';DROP TABLE students; --
xkcd.com/327
+1 für sql injection, die von mir als gut. Da jill behauptet, ein Neuling, ich denke, es ist am besten, dass neue Entwickler lernen sollte zur Sicherheit von den wirklich frühen Stadien.
Compiler - wenn Sie erwähnen, Bobby, zumindest einen link...
InformationsquelleAutor Oded
Zumindest Ihr code sollte wie folgt Aussehen:
Parameter s-Typ kann festgelegt werden (versucht werden) automatisch:
oder manuell angegeben:
auch Sie können convert date string mit dem angegebenen format, das Risiko zu minimieren, der Irrt Parsen (wegen der Kultur abhängigen Besonderheit, etc.) auf die Datenbank-Seite:
Siehe meinen editierten post
btw, können Sie mit Tilden mit syntax highlight in die Kommentare:
var hello = "world!";
InformationsquelleAutor abatishchev
Wenn die variable im Beispiel ist die TextBox, die es schreiben soll, wie projName.Text, status.Text.
InformationsquelleAutor asifabbas
Haben Sie 'Copy to Output Directory' - Eigenschaft auf 'Kopieren' für die Datenbank-Datei?
Weil diese überschreiben würde Ihre Datenbank-Datei jedes mal, wenn Sie bauen.
InformationsquelleAutor Ralf de Kleine
ist die erste Sache, die Sie tun, um herauszufinden, was Los ist, ist falsch gestellt
nach der Zeile
StringthisQuery=
Diese zeigen Ihnen genau, welche Aussage Sie sind dem Aufruf der Db mit, und es dürfte klar sein, nur aus der Betrachtung der Ausgabe, was falsch mit der Aussage.
InformationsquelleAutor Jonny Cundall
wenn Ihr ProjectStartDate und Termine im Allgemeinen werden datetime-Werte in der DB, dann erhalten Sie eine Fehlermeldung beim einfügen von Daten mit dem '.
Es sollte wie:
Ich weiß... aber das war nur, um ihm zu helfen, und mit seinem problem 🙂
InformationsquelleAutor Christian M