Jag arbetar på ett program som skall kopiera data från tabeller i en databas (SQL Server eller Oracle) till en Access-bas som man har med sig på en laptop. De ändringar man gör på den bärbara datorn skall sedan replikeras tillbaks till servern. Det rör sig om ganska många tabeller och mycket data. Vad jag kan se så sparar du aldrig posterna i den nya lokala databasen. Du måste antingen köra en insert för varje post eller skapa ett dataset som "representerar" den lokala databasen, lägga till poster där och sedan spara ner förändringarna i databasen (med dataadaptern). cmd = new OleDbCommand("UPDATE Tabell SET TRANSDAT = '" + DateTime.Now, connLokal); Kopiera DataSet
Vad jag försökt göra är att läsa data från källdatabasen till ett DataSet och skriva från DataSet:et till måldatabasen men det händer ingenting när jag skall uppdatera måldabasen. Koden ser ut ungefär så här:
private void Replikera(OleDbConnection connLokal, OleDbConnection connServer)
{
OleDbDataAdapter da;
OleDbCommand cmd;
DataSet ds;
cmd = new OleDbCommand("SELECT * FROM Tabell", connServer);
da = new OleDbDataAdapter(cmd);
ds = new DataSet();
da.Fill(ds);
connLokal.Conn.Open();
cmd = new OleDbCommand("DELETE FROM Tabell", connLokal);
cmd.ExecuteNonQuery();
cmd.Dispose();
cmd = new OleDbCommand("UPDATE Tabell SET TRANSDAT = '" + DateTime.Now, connLokal);
da = new OleDbDataAdapter(cmd);
da.Update(ds);
}
I ärlighetens namn är jag inte särskilt hemma på DataAdapter. Går det över huvud taget att använda DataAdapter som jag tänkt eller är jag helt ute och reser? Jag har inte hittat något exempel i den här stilen. Jag provade först att använda DataReader, men det blev mycket loopande för att bygga upp SQL-satserna och programmet blev helt enkelt för långsamt.
\HenrikSv: Kopiera DataSet
/JohanSv:Kopiera DataSet
cmd.ExecuteNonQuery();