用以下代码测试,其中acm为adocommand,acn为adoconnection,mem为TMemo<br>var<br> i : Integer;<br>begin<br> acm.CommandText := 'set IDENTITY_INSERT tx on; insert into tx (id, dt, ip, bw) values (1000000, ''2000-1-1'', '''', '''')';<br> try<br> acm.execute;<br> except<br> for i := 0 to acn.Errors.Count - 1 do<br> begin<br> mem.Lines.Add(acn.Errors.SQLState);<br> mem.Lines.Add(acn.Errors.Source);<br> mem.Lines.Add(acn.Errors.Description);<br> end;<br> end;<br>end;<br>如果ID为主键并插入重复值,memo中会有这样的字样:<br>23000<br>Microsoft OLE DB Provider for SQL Server<br>违反了 PRIMARY KEY 约束 'PK_tx'。不能在对象 'dbo.tx' 中插入重复键。<br>01000<br>Microsoft OLE DB Provider for SQL Server<br>语句已终止。<br><br>记住主键冲突的代码23000,你要做的是:如果errors集合中存在这个代码则跳过这个错误,否则raise抛出来