Ich habe "Jetzt lerne ich ADO.NET - das komplette Buch" durchgeackert. Habe dort einen schönen Code gefunden, damit ich per DataReader meine Daten auslesen kann. Habe dann festgestellt, daß wohl DBNull öfters vorhanden ist und entsprechend Try-Catch zum Abfangen eingebaut.
Ich habe ja nun meine ganzen Daten in einem schönen Array gespeichert: Daten.a-z
Nun wollte ich den umgekehrten Weg nehmen und Daten einfach aktualisieren.
Im Buch steht überall, alles über lange SQL-Befehle reinzukippen, irgendwie andere Wege der Datenbanken nochmals zugreifen.
Das versteh ich nicht. Auf die Datenbank greife ich bereits zu, will lesen und einfach ändern. Das wird sehr unheimlich kompliziert gemacht. Geht das nicht einfacher ?
Das ist mein LeseCode:
Dim ConnString As String = "Provider=Microsoft.JET.OLEDB.4.0;data" & _
"source=" + LStr_DatenbankName
Dim OleDbConn As OleDbConnection = New OleDbConnection(ConnString)
OleDbConn.Open()
Dim MyDataReader As OleDbDataReader
Dim MyOleDbCommand As OleDbCommand = New OleDbCommand()
MyOleDbCommand.Connection = (OleDbConn)
MyOleDbCommand.CommandText = LStr_SQL$
MyDataReader = MyOleDbCommand.ExecuteReader
Do While MyDataReader.Read
NR = Val((MyDataReader.Item("nr")))
Daten.FIRMA = (MyDataReader.Item("FIRMA"))
LOOPIm v. g. Buch steht für NEUEN DATENSATZ:
Dim conn As OleDbConnection = New
OleDbConnection(connString)
Dim sqlCmd As String = "INSERT INTO Kunden Values ({" &
System.Guid.NewGuid().ToString() & "}, " & _
"'Peter', 'Riesebehl', " & _
"'Baumstrasse 7', 20097, 'Hamburg', '040',“ & _
"'676767')"
Dim dbCmd As OleDbCommand =
New OleDbCommand(sqlCmd, conn)
conn.Open()Zum ÄNDERN steht der folgende Code:
Dim conn As OleDbConnection = New
OleDbConnection(connString)
Dim sqlCmd As String = "UPDATE Kunden SET " & _
" [Telefon-Durchwahl] = '6785432' WHERE " & _
"Vorname = 'Peter' AND Nachname = 'Riesebehl'"
Dim dbCmd As OleDbCommand =
New OleDbCommand(sqlCmd, conn)
conn.Open()
Try
' Daten ändern
Dim res As Integer = dbCmd.ExecuteNonQuery()
Catch e As Exception
Console.WriteLine(e.Message)
End Try
conn.Close() Für mich wird die SQL-Anweisung verdammmmmmmmt lange, weil ich ein paar mehr Datenfelder schreibe, daher habe ich alles schön im Array drin.
Geht das nicht eleganter für mich ?
mfg
Martin
mein aktuelles .net-Projekt:
http://www.fiman.de
freue mich über Test-Informationen.
Screenshots gibt es hier: http://www.fiman.de |