//打开数据库的一般方法 OleDbConnection cnn = new OleDbConnection(sCnn); cnn.Open(); DataTable table = new DataTable(); try { OleDbCommand cmd = new OleDbCommand(sCommand, cnn); cmd.CommandType = cmdType; //构建DataAdapter OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); //填充数据 table = new DataTable(sDataTableName); adapter.Fill(table); cnn.Close(); table.PrimaryKey = new DataColumn[1] { table.Columns[0] }; OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter); builder.QuotePrefix = "["; builder.QuoteSuffix = "]"; adapter.InsertCommand = builder.GetInsertCommand(); adapter.DeleteCommand = builder.GetDeleteCommand(); adapter.UpdateCommand = builder.GetUpdateCommand(); adapter.RowUpdated += new OleDbRowUpdatedEventHandler(OnRowUpdated); } catch { } //======================== //OleDbRowUpdatedEventHandler实例 protected void OnRowUpdated(object sender, OleDbRowUpdatedEventArgs e) { if ((e.Status == UpdateStatus.Continue) && e.StatementType == StatementType.Insert) { int newID = 0; OleDbCommand cmdGetId = new OleDbCommand("SELECT @@IDENTITY", e.Command.Connection); newID = (int)cmdGetId.ExecuteScalar(); e.Row["id"] = newID; if (newID == 0) { MessageBox.Show("获取ID值错误!"); } } } //======================== //修改row的数据 System.Data.DataTable tblChange = table.GetChanges(); affectRowCount = adapter.Update(tblChange); if (mode == modeNew) { row["id"] = tblChange.Rows[0]["id"]; } table.AcceptChanges();