从输入数据表 bcls_rec->Tables[i] 中读取多行数据,逐行向数据库表中插入新记录

首先遍历输入表的每一行:

for (int i = 0; i < bcls_rec->Tables[0].Rows.get_Count(); i++)
  • bcls_rec->Tables[0]:表示输入的第一个表。
  • Rows.get_Count():获取表的总行数。
  • 循环中每次处理表中的一行数据(第 i 行)。
w_cmd_str = "INSERT INTO xxxxxxxx(...) VALUES(@V1, @V2, ..., @V20)";
  • INSERT INTO:SQL 插入语句,用于向表 PMMP.TPMMPPPGA86 中插入一条新记录。

  • 列表部分:

(REC_CREATOR, REC_CREATE_TIME, REC_REVISOR, REC_REVISE_TIME, ARCHIVE_FLAG, ARCHIVE_STAMP_NO,
 AREA, ST_NO_FROM, ST_NO_TO, WASTARTLEN, WIDTH_CHG_LEN, PRESSURE_MIN, PRESSURE_MAX, NOTE,
 ST_NO, ROLL_WIDTH_FROM, ROLL_WIDTH_TO, ROLL_THICK_FROM, ROLL_THICK_TO, USER_NAME)
    • 指定了要插入的目标列。
    • 这些列应该是 xxxxxxxx表中的字段。
  • VALUES(@V1, @V2, ..., @V20)

    • 使用参数化查询,将输入数据绑定到占位符(@V1@V20)。

然后设置参数:

那么执行ins.Parameters.Set("V", bcls_rec->Tables[0].Rows[i]["REC_CREATOR"].ToString());

........................................................................................................................

ins.Parameters.Set("V", bcls_rec->Tables[0].Rows[i]["USER_NAME"].ToString());

  • 每次循环中,逐个字段设置 SQL 插入语句的参数值:

    • 参数名(如 @V1)对应插入语句中的占位符。
    • 参数值取自 bcls_rec->Tables[0].Rows[i] 的当前行:
      • Rows[i]:表示当前的第 i 行。
      • ["COLUMN_NAME"]:表示当前行的某一列数据,列名为 COLUMN_NAME
  • 示例:

    • ins.Parameters.Set("V1", bcls_rec->Tables[0].Rows[i]["REC_CREATOR"].ToString())
      • 从输入表的第 i 行中获取 REC_CREATOR 列的值,并赋值给 SQL 参数 @V1

执行SQL插入语句:

ins.SetCommandText(w_cmd_str);
ins.ExecuteNonQuery();
  • SetCommandText(w_cmd_str):设置 SQL 命令为构造的插入语句。
  • ExecuteNonQuery():执行插入操作,将当前行数据插入到数据库表 xxxxxxxx

完整执行流程为:

  1. bcls_rec->Tables[0] 中读取输入数据

    • 假设输入表中有 N 行数据。
    • 每一行包含 20 个字段,字段名与数据库表 xxxxxxxx 中的列名对应。
  2. 逐行构造 SQL 插入语句

    • 通过循环构造 INSERT INTO 语句,将每行数据绑定到参数中。
  3. 逐行执行插入操作

    • 每次循环插入一行数据到数据库表 xxxxxxxx

SQL 示例:

假设 bcls_rec->Tables[0] 的某一行数据为:

REC_CREATORREC_CREATE_TIMEAREAST_NO_FROMWASTARTLENUSER_NAME
"John""2024-12-15""A1"100200"Admin"

最后输出结果为:

INSERT INTO xxxxxxxx (
    REC_CREATOR, REC_CREATE_TIME, REC_REVISOR, REC_REVISE_TIME, ARCHIVE_FLAG, ARCHIVE_STAMP_NO,
    AREA, ST_NO_FROM, ST_NO_TO, WASTARTLEN, WIDTH_CHG_LEN, PRESSURE_MIN, PRESSURE_MAX, NOTE,
    ST_NO, ROLL_WIDTH_FROM, ROLL_WIDTH_TO, ROLL_THICK_FROM, ROLL_THICK_TO, USER_NAME
)
VALUES (
    'John', '2024-12-15', ..., 'Admin'
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值