在ADO中用BatchUpdate模式,怎样更新两个以上的数据表我在程序中用ADOQuery来查询两个以上的数据表,
如我查询用了ADOQuery1.sql.add('select * from a,b where a.field=b.field);之后更改了某些字段,现在要更新回各自的数据表,怎么做呢?

解决方案 »

  1.   

    /// <summary>
            /// 批量跟新
            /// </summary>
            /// <param name="dt">要更新的数据</param>
            /// <param name="errMsg">错误信息</param>
            /// <returns></returns>
    public bool BatchUpdate(DataTable dt, ref string errMsg)
            {
                bool flag = true;
                SqlDataAdapter adapter = new SqlDataAdapter();
                SqlCommand command = new SqlCommand
                {
                    Connection = this.sqlConn,
                    CommandText = " select * from " + dt.TableName
                };
                adapter.SelectCommand = command;
                adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                if ((dt != null) && (dt.Rows.Count > 0))
                {
                    SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
                    adapter.UpdateCommand = builder.GetUpdateCommand();
                    try
                    {
                        adapter.Update(dt);
                    }
                    catch (Exception exception)
                    {
                        this.RollbackTrans();
                        flag = false;
                        errMsg = exception.Message + exception.StackTrace;
                    }
                    command.Dispose();
                    builder.Dispose();
                    adapter.Dispose();
                }
                return flag;
            }