阵列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 ) ;
显示消息 ( IntToStr公司 ( 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
无功功率,无功功率
oCmd命令 : IFDPhys命令 ;
……
具有 oCmd命令 做 开始
命令文本 以下为:= '插入客户(ID,Name)值(:ID,:Name)' ;
//设置参数类型
参数 [ 0 ] . 数据类型 以下为:= ft整数 ;
参数 [ 1 ] . 数据类型 以下为:= ftString(英尺字符串) ;
参数 [ 1 ] . 大小 以下为:= 40 ;
//设置参数的数组大小
参数 . 阵列大小 以下为:= 10000 ;
//设置参数值
对于 我 以下为:= 0 到 10000 - 1 做 开始
参数 [ 0 ] . 作为整数 [ 我 ] 以下为:= 我 ;
参数 [ 1 ] . AsStrings(作为字符串) [ 我 ] 以下为:= “某人” + 国际贸易协定 ( 我 ) ;
结束 ;
//执行批处理
执行 ( 10000 , 0 ) ;
结束 ;
示例2
程序 T形1 . FDQuery1执行错误 ( A投标人 : T对象 ; 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操作 以下为:= ea失败 ;
结束 ;
结束 ;
程序 T形1 . 按钮1单击 ( A投标人 : TObject(目标) ) ;
开始
具有 FD查询1 做 开始
SQL语言 . 文本 以下为:= '插入客户(ID,RegionID,Name,Note)值(:ID,:RegionID、:Name、:Note)' ;
//设置参数类型
参数 [ 0 ] . 数据类型 以下为:= 英尺整数 ;
参数 [ 1 ] . 数据类型 以下为:= ft整数 ;
参数 [ 2 ] . 数据类型 以下为:= ftString(英尺字符串) ;
参数 [ 2 ] . 大小 以下为:= 40 ;
参数 [ 三 ] . 数据大小 以下为:= ftMemo公司 ;
//设置参数的数组大小
参数 . 阵列大小 以下为:= 10000 ;
//设置参数值
对于 我 以下为:= 0 到 10000 - 1 做 开始
如果 我 国防部 100 = 0 然后
//强制PK冲突
参数 [ 0 ] . 作为整数 [ 我 ] 以下为:= 我 - 1
其他的
参数 [ 0 ] . 作为整数 [ 我 ] 以下为:= 我 ;
参数 [ 1 ] . 作为整数 [ 我 ] 以下为:= 为客户获取区域ID ( 我 ) ;
参数 [ 2 ] . AsStrings(作为字符串) [ 我 ] 以下为:= “某人” + 国际贸易协定 ( 我 ) ;
参数 [ 三 ] . 清除 ( 我 ) ;
结束 ;
//执行批处理
执行 ( 10000 , 0 ) ;
结束 ;
结束 ;