配列 DML(FireDAC)
概要
|
|
||
" 配列 DML公司 モード " については、 「 エラーの処理 (FireDAC) 」 を参照してください。 " 配列 DML公司 の限界の兆候 " 忘我 「 デバッグとサポート (FireDAC) 」 を参照してください。
コマンドの実行
FD查询1 . SQL语言 . 文本 := '插入MyTab值(:p1,:p2,:p3)' ;
//此处FDQuery1.Params集合由3个参数填充
FD查询1 . 参数 . 阵列大小 := 100 ;
对于 我 := 0 到 100 - 1 做 开始
FD查询1 . 参数 [ 0 ] . 作为整数 [ 我 ] := 我 ;
FD查询1 . 参数 [ 1 ] . AsStrings(字符串) [ 我 ] := “qwe” ;
FD查询1 . 参数 [ 2 ] . 清除 ( 我 ) ;
结束 ;
FD查询1 . 执行 ( 100 , 0 ) ;
显示消息 ( 国际贸易协定 ( FD查询1 . 行受影响 )) ;
エラー処理
程序 T形1 . FDQuery1执行错误 ( A投标人 : TObject(目标) ; A时间 ,
A偏移 : 整数 ; A错误 : EFDDB发动机异常 ; 无功功率,无功功率 A操作 : TFD错误操作 ) ;
开始
如果 A错误 . 错误 [ 0 ] . 种类 = 违反ekUK 然后
A操作 := eaSkip公司
其他的
A操作 := eaFail(ea失败) ;
结束 ;
如果 FD连接1 . 连接元数据Intf . 阵列执行模式 = aeOnErrorUndoAll(错误全部取消) 然后
。。。。
トラブルシューティング
例 1
无功功率,无功功率
o命令 : IFDPhysCommand(IFDPhysCommand) ;
……
具有 o命令 做 开始
命令文本 := '插入客户(ID,Name)值(:ID,:Name)' ;
//设置参数类型
参数 [ 0 ] . 数据类型 := 英尺整数 ;
参数 [ 1 ] . 数据类型 := ftString(英尺字符串) ;
参数 [ 1 ] . 大小 := 40 ;
//设置参数的数组大小
参数 . 阵列大小 := 10000 ;
//设置参数值
对于 我 := 0 到 10000 - 1 做 开始
参数 [ 0 ] . 作为整数 [ 我 ] := 我 ;
参数 [ 1 ] . AsStrings(字符串) [ 我 ] := “某人” + 国际贸易协定 ( 我 ) ;
结束 ;
//执行批处理
执行 ( 10000 , 0 ) ;
结束 ;
例 2
程序 T形1 . FDQuery1执行错误 ( A投标人 : TObject(目标) ; A时间 ,
A偏移 : 整数 ; A异常 : EFDDB发动机异常 ; 无功功率,无功功率 A操作 : TFD错误操作 ) ;
开始
案例 A异常 . 错误 [ 0 ] . 种类 属于
ekPK违规 :
开始
//修复ID唯一
FD查询1 . 参数 [ 0 ] . 作为整数 [ A异常 . 错误 [ 0 ] . 行索引 ] := A异常 . 错误 [ 0 ] . 行索引 ;
A操作 := ea重试 ;
结束 ;
ekFK违规 :
//如果找不到RegionID为的Region,则跳过行
A操作 := eaSkip公司 ;
其他的
A操作 := eaFail(ea失败) ;
结束 ;
结束 ;
程序 T形1 . 按钮1单击 ( A投标人 : TObject(目标) ) ;
开始
具有 FD查询1 做 开始
SQL语言 . 文本 := '插入客户(ID,RegionID,Name,Note)值(:ID,:RegionID、:Name、:Note)' ;
//设置参数类型
参数 [ 0 ] . 数据类型 := 英尺整数 ;
参数 [ 1 ] . 数据类型 := 英尺整数 ;
参数 [ 2 ] . 数据类型 := ftString(英尺字符串) ;
参数 [ 2 ] . 大小 := 40 ;
参数 [ 三 ] . 数据类型 := 英尺备忘录 ;
//设置参数的数组大小
参数 . 阵列大小 := 10000 ;
//设置参数值
对于 我 := 0 到 10000 - 1 做 开始
如果 我 模块 100 = 0 然后
//强制PK冲突
参数 [ 0 ] . 作为整数 [ 我 ] := 我 - 1
其他的
参数 [ 0 ] . 作为整数 [ 我 ] := 我 ;
参数 [ 1 ] . 作为整数 [ 我 ] := 为客户获取区域ID ( 我 ) ;
参数 [ 2 ] . AsStrings(字符串) [ 我 ] := “某人” + 国际贸易协定 ( 我 ) ;
参数 [ 三 ] . 清除 ( 我 ) ;
结束 ;
//执行批处理
执行 ( 10000 , 0 ) ;
结束 ;
结束 ;