中国开发网: 论坛: 程序员情感CBD: 贴子 571152
一夜风雨
在做ado的事务处理时,有一批insert语句,有可能出先主键重复的现象,怎么才能知道是那条insert出错了呢?
procedure TForm1.Button3Click(Sender: TObject);
var
F: Textfile;
sl, slTmp: TStringList;
i, j: Integer;
str, strSql: String;
begin
Memo1.Clear;
sl := TStringList.Create;
slTmp := TStringList.Create;

ADOConnection1.ConnectionString := 'Provider=MSDASQL.1;Password=switch;Persist Security Info=True;User ID=switch;Data Source=switch';
ADOConnection1.Open;


OpenDialog1.Title := '批量导入';
if OpenDialog1.Execute then begin
try
sl.LoadFromFile(OpenDialog1.FileName);
if MessageDlg('确认要批量导入文件“' + OpenDialog1.FileName + '”的持卡人资料吗?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
ADOConnection1.BeginTrans;
for i:=0 to sl.Count-1 do
begin
str := sl.Strings[i];
slTmp.Delimiter := '|';
slTmp.DelimitedText := sl.Strings[i];

strSql := 'insert into cardowner values( ' +
QuotedStr(slTmp.Strings[0]) + ', ' +
QuotedStr(slTmp.Strings[1]) + ', ' +
QuotedStr(slTmp.Strings[2]) + ', ' +
QuotedStr(slTmp.Strings[3]) + ', 0, 52, ' +
QuotedStr(FormatDateTime('yyyymmdd', Now + 0.125)) + ', ' +
QuotedStr('0') + ');';

memo1.Lines.Add(strSql);

end;
ADOCommand1.Connection := ADOConnection1;
ADOCommand1.CommandText := memo1.Lines.Text;
ADOCommand1.Execute;

ADOConnection1.CommitTrans;
end;
except
ADOConnection1.RollbackTrans;
sl.Free;
MessageDlg('批量导入失败,可能是有', mtError, [mbOk], 0);
end;
end;
ADOConnection1.Close;
end;
奏刀騞然,莫不中音。合於桑林之舞,乃中经首之会。

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录