Hejsan Lösningen.. problem med OleDbDataAdapter.
Har ett lite problem med OleDbDataAdapter och Access som databas.
Jag laddar ett untyped dataset genom att anropa adapter.Fill(ds,tblName). detta fungerar smärtfritt, i detta dataset så ändrar jag sedan ett värde.
ds.Tables[0].Rows[0]["kategori"] = "glass";
När jag modifierat datasetet så kontrollerar jag om det finns några ändringar genom HasChanges.
Finns det några ändringar så skickar jag det till min databasklass där jag har min adapter.
<code>
string sqlCommand = "UPDATE fordon SET regnummer = ?,";
sqlCommand += "kategori=?, plats =?,status=?,tb_id =? ";
sqlCommand +="where id =?";
adapter.UpdateCommand = new OleDbCommand(sqlCommand, this.connection);
adapter.UpdateCommand.Parameters.Add("@regnummer",OleDbType.VarChar,25,"regnummer");
adapter.UpdateCommand.Parameters.Add("@id",OleDbType.Integer,4,"id");
adapter.UpdateCommand.Parameters.Add("@kategori",OleDbType.VarChar,25,"kategori");
adapter.UpdateCommand.Parameters.Add("@plats",OleDbType.VarChar,25,"plats");
adapter.UpdateCommand.Parameters.Add("@status",OleDbType.VarChar,25,"status");
adapter.UpdateCommand.Parameters.Add("@tb_id",OleDbType.Integer,4,"tb_id");
</code>
När jag sedan gör adapter.Update(ds,tblName) så får jag felet "UpdateCommand affected 0 records".
kontrollerar jag tillståndet på den enda raden som finns i dset så är den modified, och alla värden som finns i den här raden, har de korrekta värdena, då jag skriver ut datasetet, innan jag skickar det till databasklassen.
har försökt hitta en lösning på detta i 2 dagar nu men lyckas inte.. Någon som har någon idé om varför det inte fungerar?
Lägger till lite saker här..
Har försökt hitta var det blir fel genom denna kodsnutt.
<code>
string sqlCommand1 = "UPDATE fordon SET regnummer = ?, kategori=? where id =?";
adapter.UpdateCommand.Parameters.Add"@regnummer",OleDbType.VarChar,50,"regnummer");
adapter.UpdateCommand.Parameters.Add"@kategori",OleDbType.VarChar,50,"kategori");
adapter.UpdateCommand.Parameters.Add("@id",OleDbType.Integer,4,"id");
adapter.update(ds,"bilar");
</code>
detta ger fortfarande samma fel.
Använder jag denna koden..
<code>
<code>
string sqlCommand1 = "UPDATE fordon SET regnummer = ? where id =?";
adapter.UpdateCommand.Parameters.Add"@regnummer",OleDbType.VarChar,50,"regnummer");
adapter.UpdateCommand.Parameters.Add("@id",OleDbType.Integer,4,"id");
adapter.update(ds,"bilar");
</code>
Då fungerar det.. ?!?!
Är ganska färsk på .net.. men vad är era erfarenheter av dataset å dataadapters.. Har jobbat lite den senaste vecka för att förstå det och vet inte riktigt vad jag tycker om det. hade varit skoj att höra vad ni har för erfarenheter å tankar om det.. Sv: problem med OleDbDataAdapter.
string sqlCommand = "UPDATE fordon SET regnummer = ?,";
sqlCommand += "kategori=?, plats =?,status=?,tb_id =? ";
sqlCommand +="where id =?";
adapter.UpdateCommand.Parameters.Add("@regnummer",OleDbType.VarChar,25,"regnummer");
adapter.UpdateCommand.Parameters.Add("@id",OleDbType.Integer,4,"id");
adapter.UpdateCommand.Parameters.Add("@kategori",OleDbType.VarChar,25,"kategori");
adapter.UpdateCommand.Parameters.Add("@plats",OleDbType.VarChar,25,"plats");
adapter.UpdateCommand.Parameters.Add("@status",OleDbType.VarChar,25,"status");
Då man lägger till parameters så måste man lägga till dem i den ordningen som de har i sqlfrågan.
så ordningen skall vara.
regnummer
kategori
plats
status
tb_id
id
Då fungerar det.. :-)