无法在ms Access中更新但在dgv C#中成功更新

时间:2014-09-11 10:42:16

标签: c# ms-access datagridview oledb update-statement

这是我的btnUpdate代码,以便msAccess更新。

  private void btnUpdate_Click(object sender, EventArgs e)
            {
                string CoString=(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=H:\AccessDatabase.accdb");
                OleDbConnection con = new OleDbConnection(CoString);
                string Update ="Select * from StudentDb";
                DataSet ds = new DataSet();
                DataSet changes;
                OleDbCommandBuilder cbuild = new OleDbCommandBuilder();
                try
                {
                con.Open();
                OleDbDataAdapter da = new OleDbDataAdapter(Update, con);
                da.Fill(ds);
                cbuild = new OleDbCommandBuilder(da);
                changes = ds.GetChanges();
                if (changes != null)
                {
                    da.Update(ds.Tables[0]);
                }
                ds.AcceptChanges();
                MessageBox.Show("Save changes");
                con.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

我没有任何错误但是当我单击保存并加载msAccess数据库时它恢复到原始状态,在msAccess中根本不更新,但在c#上的datagridview上它更新成功,我的代码可能出错?

1 个答案:

答案 0 :(得分:1)

您似乎根本无法从datagridview中检索任何数据。您正在从Access数据库中的StudentDB表中检索DataSet ds中的所有内容。然后在ds上调用GetChanges()并将其保存到另一个名为changes的DataSet中。由于ds的内容直接来自Access数据库,因此不会保存更改。