//希望在DataGrid中执行插入,更新和删除操作,但只有删除操作正常,插入和更新都提示update(insert)语法有错,请问这是为什么?
private void DataGridTest_Load(object sender, System.EventArgs e)
{
string strOpen="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/Visual Studio Projects/WinForm/Test.mdb";
string strQuery="select * from users";
con=new OleDbConnection(strOpen);
ada=new OleDbDataAdapter(strQuery,con);
cmd=new OleDbCommandBuilder(ada);
con.Open();
ds=new DataSet();
ada.Fill(ds);
dbg.DataSource=ds.Tables[0]; }
//在DataGrid中更新数据时提示'update语法有错'(插入操作代码同此一样)
private void btnUpdate_Click(object sender, System.EventArgs e)
{
if(ds.HasChanges())
{
try
{
ada.Update(ds);
MessageBox.Show("已更新!");
}
catch(OleDbException ex)
{
MessageBox.Show(ex.Message);
}
}

}//删除功能正确
private void btnDelete_Click(object sender, System.EventArgs e)
{
if(MessageBox.Show("是否删除?","确定",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
{
try
{
ds.Tables[0].Rows[dbg.CurrentRowIndex].Delete();
ada.Update(ds.Tables[0]);
MessageBox.Show("已删除!");
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
}
}
}

解决方案 »

  1.   

    将更新中的ada.Update(ds)改为ada.Update(ds.Table[0])试试
      

  2.   

    看个例子static private DataSet CreateCommandAndUpdate(
        string connectionString,
        string queryString)
    {
        DataSet dataSet = new DataSet();    using (OleDbConnection connection =
                   new OleDbConnection(connectionString))
        {
            connection.Open();
            OleDbDataAdapter adapter =
                new OleDbDataAdapter();
            adapter.SelectCommand =
                new OleDbCommand(queryString, connection);
            OleDbCommandBuilder builder =
                new OleDbCommandBuilder(adapter);        adapter.Fill(dataSet);        // Code to modify data in the DataSet here.        // Without the OleDbCommandBuilder, this line would fail.
            adapter.UpdateCommand = builder.GetUpdateCommand();
            adapter.Update(dataSet);
        }
        return dataSet;
    }