Insert into OLEDB VB.NET
Was ist Los mit diesem?
da.InsertCommand = New OleDb.OleDbCommand("Insert Into Table1 Values( 1, '" & TextBox1.Text & "')")
da.InsertCommand.Connection = con
con.Open()
da.Update(ds)
con.Close()
Die Datenbank nie aktualisiert, egal was.
Oder gibt es einen besseren Weg, um in die db einfügen? Ich habe versucht, das CommandBuilder-aber es scheint nicht zu funktionieren.
Oder kann ich direkt ausführen einer Abfrage auf meine Datenbank in VB.NET?
- Verwenden Sie den Befehl ausführen anstelle des Daten-adapter, verwenden Sie stattdessen die Parameter der Verkettung von dem Wert direkt in den Befehl text, bekommen den Befehl von
con.CreateCommand
erstellen, anstatt es selbst direkt, und entsorgen Sie die Einweg-Objekte (Hinweis, verwenden Sie dieUsing
- Anweisung).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie ein bisschen verwirrt in Bezug auf was DataAdapter.Update ist.
Das Update funktioniert mit den Eigenschaften InsertCommand, UpdateCommand, DeleteCommand zu jedem Hinzugefügten, Geänderten oder Gelöschten Zeilen in der Datenquelle (angenommen, dass ds ein DataSet).
Es spielt keine hinzufügen/löschen/aktualisieren eines Datensatzes in der Datenbank selbst.
Wenn Sie möchten, hinzufügen eines Datensatzes zu der Datenbank, die Sie schreiben sollten (pseudo -) code wie dieser
Beachten Sie die Verwendung der Using-Anweisung werden Sie sicher zu schließen-und Entsorgung der Anschluss und der Befehl. Auch, nie verketten von strings zum erstellen von sql-Befehlen. Die Verwendung von Parametern zu vermeiden, analysieren Probleme und SQL-Injection-Angriffe.
EDIT: Basierend auf Ihren Kommentar unten, und Sie meinte, dass die erste Spalte der Tabelle1 ist ein AutoWert-Feld könnte man den code ändern, der auf diese Weise
Auch für das problem für 'wurde nichts Hinzugefügt," ich denke, Sie haben die Datenbank-Datei (mdb) in Ihrem Projekt enthalten und die Eigenschaft
Copy To The Output Directory
eingestelltCopy Always
Finden Sie eine ausführliche Erklärung auf MSDN auf dieser Seite
Ja, ist es, weil Sie nicht versucht, führen Sie Ihre non-Abfrage. Denken Sie daran, SELECT-Anweisung ist eine Abfrage-Anweisung, während INSERT -, UPDATE -, DELETE-nicht-Abfrage-Anweisung. da.Update() oder da.Fill() wird nur ziehen Sie das Ergebnis einer query-operation.
Müssen Sie fügen Sie eine zusätzliche Zeile, nachdem Sie öffnen Sie die Verbindung als da.ExecuteNonQuery() oder eine beliebige Anweisung, die ausgeführt wird, einen nicht-Abfrage-Anweisung in VB.NET!
~Shakir Shabbir
Sauber und ordentlich...
Es ist ein bisschen böse, weil Sie die Möglichkeit von SQL-Injection oder Textbox1.Text mit einfachen Anführungszeichen, aber für test/dev-Zwecke, es wird funktionieren.