Autor Beitrag
thas11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Do 07.04.11 14:21 
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
ausblenden 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);        //Hier lese ich die Daten
dataAdapterCube.Fill(dataSetCube);
Console.WriteLine(dataSetCube.Tables[0].Rows[0][0].ToString());
dataSetCube.Tables[0].Rows[0][7] = 25;                             //hier mache ich testweise eine Änderung 
dataAdapterCube.Update(dataSetCube.Tables[0].GetChanges());  //hier bekomme ich den Fehler


Vielleicht sieht jemand den Fehler...

Danke & lg,
Wolfi
thas11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: 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:
ausblenden 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
ausblenden C#-Quelltext
1:
oCom.Parameters.Add("@PK", OleDbType.VarWChar,200,"PK");					



lg,
Wolfi