1

Access データベースを更新できるOleDbCommandを実行するために使用します。sqlcommandしかし、データベースを使用OleDbDataAdapterDataTableて更新しようとすると、機能しません。

using (OleDbConnection conn = new OleDbConnection(connStr))
        {
            conn.Open();
            OleDbDataAdapter adapter = new OleDbDataAdapter("select * from confirm", conn);
            OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
            DataTable table = new DataTable();
            adapter.Fill(table);
            DataRow row = table.NewRow();
            row["k"] = "november";
            row["v"] = "eleven";
           // table.AcceptChanges();
            adapter.UpdateCommand = builder.GetUpdateCommand();
            adapter.Update(table);
           // table.AcceptChanges();
            return table;
        }

コードを実行しても、データベースは変更されません。

4

1 に答える 1

0

これDataRow row = table.NewRow();により、テーブル スキーマを含む行が作成されますが、その行はDataTable. テーブルに行を追加する必要があります:

table.Rows.Add(row);

完全なコード

using (OleDbConnection conn = new OleDbConnection(connStr)) 
{
    conn.Open();
    OleDbDataAdapter adapter = new OleDbDataAdapter("select * from confirm", conn);
    OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
    DataTable table = new DataTable();
    adapter.Fill(table);
    DataRow row = table.NewRow();
    row("k") = "november";
    row("v") = "eleven";

    //**You missed this**
    table.Rows.Add(row);

    adapter.UpdateCommand = builder.GetUpdateCommand();
    adapter.Update(table);
    // table.AcceptChanges();
    return table;
}
于 2013-09-07T16:34:10.623 に答える