简体   繁体   中英

Updating MS Access Database from Datagridview

I am trying to update an ms access database from a datagridview.

The datagridview is populated on a button click and the database is updated when any cell is modified.

The code example I have been using populates on form load and uses the cellendedit event.

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());
    }
}

The error I receive is

Update requires a valid UpdateCommand when passed DataRow collection with modified rows.

I'm not sure where this command needs to go and how to reference the cell to update the value in the database.

The dbDataAdapterClass (the one that OleDbDataAdapter inherit from) has a SelectCommand, UpdateCommand and InsertCommand. This are the one responsible for select, update, and insert when you explicit call any of the methods (for example update ;) ). Since in your code, you never provide the command that explain how to do the update, the dataadapter doesn't know how to do it.

so fulfill the requirements, adding an update command to the adapter.

dataadapter = new OleDbDataAdapter(sql, connection);

Add below code after above line, OleDbCommandBuilder will generate commands for you.

OleDbCommandBuilder cb = new OleDbCommandBuilder(dataadapter);

This tutorial will give you more information.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM