Я предполагаю, что вы не опубликовали полный исходный код, так как похоже, что вы не изменяете набор данных. Тем не менее, я просто немного подправил ваш код (см. Мои комментарии).
Надеюсь, это поможет ...
string queryString = "SELECT * FROM tasks";
OleDbConnection connection = new OleDbConnection(cn.ConnectionString);
connection.Open(); // open connection first
SqlCommand cmd = new SqlCommand(queryString, connection);
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); // use the cmd above when instantiating the adapter
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
adapter.Fill(ds.Tables["Tasks"]);
// Modify your dataset here.
// Don't call AcceptChanges() as this will prevent the update from working.
adapter.Update(ds);
connection.Close(); // Close connection before ending the function
return ds;
Это должно позволить OleDbCommandBuilder сделать свое дело, автоматически создавая сценарии обновления базы данных.