Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未能在msAccess中更新,但在dgv C中成功更新#_C#_Ms Access_Datagridview_Oledb_Update Statement - Fatal编程技术网

C# 未能在msAccess中更新,但在dgv C中成功更新#

C# 未能在msAccess中更新,但在dgv C中成功更新#,c#,ms-access,datagridview,oledb,update-statement,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 = ne

这是我的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上更新成功,我的代码可能有什么问题?

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

我删除了另一个数据集仍然相同您是如何填充DataGridView的?尝试从该控件填充DataTable。类似于以下内容:DataTable studentDatatable=(DataTable)dataGridView1.DataSource;DataTable studentDatatable=(DataTable)dgvStudentDb.DataSource;dgvStudentDb.DataSource=studentDatatable;使用了这个,但不起作用。