Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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# 从Datagridview更新MS Access数据库_C#_Sql_Datagridview_Tableadapter_Dataadapter - Fatal编程技术网

C# 从Datagridview更新MS Access数据库

C# 从Datagridview更新MS Access数据库,c#,sql,datagridview,tableadapter,dataadapter,C#,Sql,Datagridview,Tableadapter,Dataadapter,我正在尝试从datagridview更新ms access数据库 单击按钮即可填充datagridview,并在修改任何单元格时更新数据库 我在表单加载时使用的代码示例是populates,并使用cellendedit事件 private OleDbConnection connection = null; private OleDbDataAdapter dataadapter = null; private DataSet ds = null; private void Form2_Load

我正在尝试从datagridview更新ms access数据库

单击按钮即可填充datagridview,并在修改任何单元格时更新数据库

我在表单加载时使用的代码示例是populates,并使用cellendedit事件

private OleDbConnection connection = null;
private OleDbDataAdapter dataadapter = null;
private DataSet ds = null;
private void Form2_Load(object sender, EventArgs e)
{

    string connetionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\\Users\\Peter\\Documents\\Visual Studio 2010\\Projects\\StockIT\\StockIT\\bin\\Debug\\StockManagement.accdb';Persist Security Info=True;Jet OLEDB:Database Password=";
    string sql = "SELECT * FROM StockCount";
    connection = new OleDbConnection(connetionString);
    dataadapter = new OleDbDataAdapter(sql, connection);
    ds = new DataSet();
    connection.Open();
    dataadapter.Fill(ds, "Stock");
    connection.Close();

    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "Stock";

}
private void addUpadateButton_Click(object sender, EventArgs e)
{

}

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    try
    {
        dataadapter.Update(ds,"Stock");
    }
    catch (Exception exceptionObj)
    {
        MessageBox.Show(exceptionObj.Message.ToString());
    }
}
我收到的错误是

传递数据行集合时,更新需要有效的UpdateCommand 使用修改的行

我不确定此命令需要转到何处以及如何引用单元格以更新数据库中的值。

DBDataAdapter类(OleDbDataAdapter继承自的类)具有SelectCommand、UPDATECOMAND和INSERCOMMAND。当显式调用任何方法(例如update;)时,它负责选择、更新和插入。 因为在代码中,您从未提供解释如何进行更新的命令,所以dataadapter不知道如何进行更新

因此,为适配器添加一个更新命令以满足需求

dataadapter = new OleDbDataAdapter(sql, connection);
在上面一行之后添加下面的代码,将为您生成命令

OleDbCommandBuilder cb = new OleDbCommandBuilder(dataadapter);
本教程将为您提供更多信息

而不是向适配器添加更新命令。我想说设置
UpdateCommand
属性