Mithilfe einer update-Anweisung für Access-Datenbank (VB 2008)
Ich versuche, erstellen Sie eine update-Anweisung für mein Programm, das aktualisieren einer Datenbank mithilfe von SQL auf der Basis der Daten, die der Benutzer eingibt, leider habe ich das problem, dass ich nur das update einer Spalte zu einer Zeit, und manchmal keiner von Ihnen arbeiten. Ich bin mir bewusst, dass diese Funktion sehr einfach und nicht sehr sicher ist gegen Angriffe, aber es ist ein kleines Projekt, dass ich mache. Leider habe ich nur grundlegende Programmierkenntnisse, so bin ich mit Mühe diesen Teil zu arbeiten. Wenn keine Hilfe gegeben werden konnte es wird sehr geschätzt.
Private Sub btnsave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsave.Click
Dim con As New OleDb.OleDbConnection
Dim d1 As New OleDb.OleDbDataAdapter
Dim d2 As New OleDb.OleDbDataAdapter
Dim d3 As New OleDb.OleDbDataAdapter
Dim d4 As New OleDb.OleDbDataAdapter
Dim d5 As New OleDb.OleDbDataAdapter
Dim d6 As New OleDb.OleDbDataAdapter
Dim d7 As New OleDb.OleDbDataAdapter
Dim d8 As New OleDb.OleDbDataAdapter
Dim d9 As New OleDb.OleDbDataAdapter
Dim d10 As New OleDb.OleDbDataAdapter
Dim dt As New DataTable("Animals")
'uses the 2010 compatible connection string
con.ConnectionString = "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source = h:\Animals.accdb"
con.Open()
MsgBox("UPDATE Animals SET LatinName = '" & latintxt.Text & "'" & " WHERE AnimalName = " & "'" & Form1.txtname.Text & "'")
d1 = New OleDb.OleDbDataAdapter("UPDATE Animals SET LatinName = '" & latintxt.Text & "'" & " WHERE AnimalName = " & "'" & Form1.txtname.Text & "'", con)
d2 = New OleDb.OleDbDataAdapter("UPDATE Animals SET LocationFound = '" & locationtxt.Text & "'" & " WHERE AnimalName = " & "'" & Form1.txtname.Text & "'", con)
d3 = New OleDb.OleDbDataAdapter("UPDATE Animals SET AverageHeight = '" & heighttxt.Text & "'" & " WHERE AnimalName = " & "'" & Form1.txtname.Text & "'", con)
d4 = New OleDb.OleDbDataAdapter("UPDATE Animals SET AverageWeight = '" & weighttxt.Text & "'" & " WHERE AnimalName = " & "'" & Form1.txtname.Text & "'", con)
d5 = New OleDb.OleDbDataAdapter("UPDATE Animals SET DietaryNeeds = '" & diettxt.Text & "'" & " WHERE AnimalName = " & "'" & Form1.txtname.Text & "'", con)
d6 = New OleDb.OleDbDataAdapter("UPDATE Animals SET ConservationStatus = '" & statustxt.Text & "'" & " WHERE AnimalName = " & "'" & Form1.txtname.Text & "'", con)
d7 = New OleDb.OleDbDataAdapter("UPDATE Animals SET AverageLifeSpan = '" & lifetxt.Text & "'" & " WHERE AnimalName = " & "'" & Form1.txtname.Text & "'", con)
d8 = New OleDb.OleDbDataAdapter("UPDATE Animals SET BreedingSeason = '" & breedtxt.Text & "'" & " WHERE AnimalName = " & "'" & Form1.txtname.Text & "'", con)
d9 = New OleDb.OleDbDataAdapter("UPDATE Animals SET AverageLength = '" & lengthtxt.Text & "'" & " WHERE AnimalName = " & "'" & Form1.txtname.Text & "'", con)
d10 = New OleDb.OleDbDataAdapter("UPDATE Animals SET AnimalName = '" & nametxt.Text & "'" & " WHERE AnimalName = " & "'" & Form1.txtname.Text & "'", con)
d1.Fill(dt)
d2.Fill(dt)
d3.Fill(dt)
d4.Fill(dt)
d5.Fill(dt)
d6.Fill(dt)
d7.Fill(dt)
d8.Fill(dt)
d9.Fill(dt)
d10.Fill(dt)
con.Close()
End Sub
- Was führt Sie zu glauben, dass Sie "nur aktualisieren, ein zu einer Zeit"? Die Blicke von Ihr code es scheint, dass Sie unter dem Eindruck, dass Sie nur das update eine Spalte (Feld) in einer Zeit. (Hinweis: Das ist einfach nicht wahr.)
- Sorry, das meinte ich damit, ich kann nur das update eine Spalte zu einem Zeitpunkt z.B. kann ich nicht einfach die Eingabe von Daten in mehrere Felder und haben Sie alle aktualisieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausführen eines update-Befehls könnten Sie schreiben, eine einzelne Anweisung, und verwenden Sie eine OleDbCommand mit ExecuteNonQuery Methode.
Gibt es ein paar Probleme bewusst zu werden und dazu führen könnte, dass ein update-Fehler.
Zuerst alle Parameter Werte vom Typ string sind und dies könnte Ihr Hauptproblem. Wenn die Datenbank Felder sind nicht der Typ text ist, dann müssen Sie konvertieren Sie diese Werte in den entsprechenden Typ.
Zum Beispiel, wenn das Feld
AverageHeight
ist numerisch (doppelt), dann ist der parameter sollten wie folgt geschrieben werden:und, natürlich, den text präsentieren in der heighttxt werden sollte, umwandelbar zu einem Doppelbett.
Das zweite problem ist der Inhalt der parameter verwendet, um den Datensatz zu aktualisieren.
In der Abfrage dieses Feld benannt ist
AnimalName
Suche den Datensatz mitForm1.txtname.Text
, aber in der gleichen Abfrage text, den Sie versuchen zu aktualisieren, das gleiche Feld in der WHERE-Klausel verwendennametxt.Text
. Logisch, diese beiden Felder den gleichen Wert enthält, so müssen Sie nur einen parameter.Letzten Punkt zu erinnern, in der OleDb-Parameter nicht erkannt werden, die durch Ihren Namen sondern durch Ihre position in der command text. Also hütet Euch davor, die richtige Reihenfolge, in der die Parameter werden Hinzugefügt, um die parameter-Auflistung
UPDATE
wird nur update vorhandenen Datensätze in der Datenbank, es werden keine neuen Datensätze hinzufügen. Zum hinzufügen von neuen Datensätzen müssen Sie eineINSERT
Befehl, die hat eine etwas andere syntax als dieUPDATE
Befehl.Imports System.Data.OleDb
. Nun können Sie Variablen deklarieren, wie in den obigen code ohne Präfix jede Aussage mit dem gesamten System.Daten.OleDb@p11
ohne Feld zu speichern.