thas11 - Do 07.04.11 14:21
Titel: Update mit DataAdapter schlägt fehll
Hallo!
Ich möchte aus einer Access Datenbank immer nur eine einuzelne Zeile auslesen und dann diese Zeile im Programm editieren bzw falls dieser Eintrag nicht in der Datenbank gefunden wird neu anlegen -> Am Ende möchte ich dies wieder in die Datenbank zurückspeichern....
Habs folgedermasen versucht aber bekomme die folgende Fehlermeldung:
ex.Message = "OleDbCommand.Prepare method requires all variable length parameters to have an explicitly set non-zero Size."
Hier ein auszug aus dem Quelltext
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| OleDbCommand oCom = new OleDbCommand("SELECT * FROM TableXY WHERE PK= @PK",myConnection).Connection); oCom.Parameters.Add("@PK", OleDbType.VarWChar); OleDbDataAdapter dataAdapterCube = new OleDbDataAdapter(); dataAdapterCube.SelectCommand = oCom; DataSet dataSetCube = new DataSet(); OleDbCommandBuilder oComBuilder = new OleDbCommandBuilder(dataAdapterCube); dataAdapterCube.SelectCommand.Parameters["@PK"].Value = "test"; dataAdapterCube.FillSchema(dataSetCube, SchemaType.Source); dataAdapterCube.Fill(dataSetCube); Console.WriteLine(dataSetCube.Tables[0].Rows[0][0].ToString()); dataSetCube.Tables[0].Rows[0][7] = 25; dataAdapterCube.Update(dataSetCube.Tables[0].GetChanges()); |
Vielleicht sieht jemand den Fehler...
Danke & lg,
Wolfi
thas11 - Do 07.04.11 15:29
Hallo!
Nach ewiger Suche und herumprobieren hab ich den bsch*** Fehler nun gefunden:
Also falls jemand anderer mal auf dasselbe Problem stösst hier die Antwort:
er lag in dieser Zeile:
C#-Quelltext
1:
| oCom.Parameters.Add("@PK", OleDbType.VarWChar); |
-> ES müssen noch zusätzlich die Länge und der ColumnName angegeben werden...
Das sieht dann so aus
C#-Quelltext
1:
| oCom.Parameters.Add("@PK", OleDbType.VarWChar,200,"PK"); |
lg,
Wolfi