这句代码为什么不报错?(50分)

  • 主题发起人 主题发起人 renzhm
  • 开始时间 开始时间
R

renzhm

Unregistered / Unconfirmed
GUEST, unregistred user!
ADOQuery1.SQL.Text:='insert into 机位约束表(机位,机型,备注) '+
'values(''01'',''dddd'',''ddd'') '+
'insert into 机位约束表(机位,机型,备注) '+
'values(''01'',''dddd'',''ddd'') ';
ADOQuery1.ExecSQL;

其中,字段“机位”为主键,

这句代码为什么不报错,而且第一条记录还能插入成功?

使用TQuery控件也是一样。
 
编译当然不错了,执行也不错?不可能啊?
 
这很正常,错误被SQL Server 扼杀了
如果你告诉我两条记录插入成功那我倒想看看
 
挺奇怪,
表xu无主键和唯一键
为什么sql.text := 'insert into xu values(1,'s')'
+ 'insert into xu values(1,'s')'
执行时无错误
而使用sql.text := 'insert into xu values(:id1, :name1)'
+ 'insert into xu values(:id2, :name2)'
adoquery.prepared := true;
adoquery.parameters[0].value := 1;
adoquery.parameters[1].value := 's';
adoquery.parameters[2].value := 2;
adoquery.parameters[3].value := 's';
adoquery.execsql;
则会出错呢?
有没有办法在同一sql中通过预分析方法同时执行两条以上的insert语句?
 
to :tan_jian

试试就知道了,

to onlyonekgx:
如何截获这个错误?
 
既然是主键,怎么可以插入两条主键值相同的记录?
 
突然想起一个问题,是李维书上说的,这个好象是BDE和ADO之间处理数据库方式的不同吧,
我很可能说错了,好久没写了也没看那本书了,是ADO的,看看你就明白了!
 
两句Insert之间加个go 试试
 
这样做:
sql.clear
sql.add('insert into xu values(:id1, :name1)')
sql.add('insert into xu values(:id2, :name2)')
....
 
后退
顶部