Min databas uppdateras inte som jag vill. Istället för att göra databasen till en exakt kopia av mitt DataSet, vilket är vad jag skulle önska, så lägger istället dataadaptern till DataSetdatat till det data som redan finns i databasen. Databasen växer alltså vid varje uppdatering även uppdateringen egentligen bara ska modifiera redan befintlig data. Vill du uppdatera befintlig data så måste du läsa upp de rader som finns i databasen och sedan redigera dessa (i datasetet) och därefter göra en Update. Nu lägger du till en ny rad i datasetet som inte finns sedan tidigare i databasen och därför kommer den att läggas till i tabellen varje gång, precis som du skriver. Jag har inte varit helt tydlig med koden i mitt inlägg. DataSet:et laddas först med databasen, precis som du säger att man bör göra, men det krånglade iallafall.Uppdatera databas med DataSet
generalSet.Clear(); //Detta är DataSet:et.
generalSet.Tables["GeneralSettings"].Rows.Add(generalSet.Tables["GeneralSettings"].NewRow());
generalSet.Tables["GeneralSettings"].Rows[0]["Objective"] = "Value";
string tableGeneral = "SELECT * FROM GeneralSettings";
OleDbDataAdapter da = new OleDbDataAdapter(tableGeneral, con); //con är en klassvariabel.
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
con.Open();
a = da.Update(generalSet, "GeneralSettings");
con.Close();
Kan detta problem kanske bero på någon inställning i OleDbCommandBuilder? Andra förslag?
/Peter
Sv: Uppdatera databas med DataSet
Ett möjligt alternativ är att alltid radera alla poster i tabellen innan du skriver ned de nya, men jag föredrar den första metoden.Sv:Uppdatera databas med DataSet
Jag ögnade lite i dokumentationen och fann att Clear() bara funkar på vissa typer av databaser. Jag undersökte inte detta närmare utan deletade istället raderna "manuellt" (rows[int].delete()).
Tack för tipsen dock!