先用query 执行一下query.close
query.sql.clear;
query.sql.add('set identity_insert on');
query.excutsqltable....
query.sql.clear;
query.sql.add('set identity_insert on');
query.excutsqltable....
解决方案 »
- 普通Dll如何实现一个预定义的COM接口
- 今天弄明白了 Windows 快捷键的来由, 很高兴!
- DBLookupComboBox相关问题
- 机子是许多.itm文件,是不是病毒,能用什么程序打开吗?我是大菜鸟,请各位大侠帮帮忙!
- ClientDataSet+DataSetProvider+adoquery, adoquery数据发生变化,ClientDataSet如何自动更新?
- Enter键自动变成Tab键
- DELPHI的公式编辑器
- 在线程当中能不能创建COM对象?
- 请问怎样获得本机的IP地址?:)
- 如何知道每个月的最后一天?
- 各位大虾:不知什么原因我的这个程序总出错!程序如下!
- 一个菜鸟问题!
哪有这样的语法,应该是'set identity_insert {database.owner.table} on';
另外应该是executesql
adoquery1.SQL.add(' SET IDENTITY_INSERT db.dbo.t1 on');
或
ADOConnection1.Execute(' SET IDENTITY_INSERT db.dbo.t1 on')后
用ADOConnection1 或adoquery1 均可插入值
而adotabel军报错 可能 是因为 insert 自动增加的字段 要求显示的比如
SET IDENTITY_INSERT db.dbo.t1 on
insert into t1 values(111,'aa','bb') 就不行错误信息
//仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 't1' 中为标识列指定显式值。
insert into t1(a1,a2,a3) values(111,'aa','bb') 就可以
CREATE TABLE [t1] (
[a1] [int] IDENTITY (1, 1) NOT NULL ,
[a2] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[a3] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_t1] PRIMARY KEY CLUSTERED
(
[a1]
) ON [PRIMARY]
) ON [PRIMARY]procedure TForm1.Button1Click(Sender: TObject);
begin
ADOConnection1.Execute(' SET IDENTITY_INSERT db.dbo.t1 on')
end;procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ADOConnection1.Execute('insert into t1(a1) values('+edit1.text+')');
end;procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
ADOTable1.Insert;
adotable1.Fields[0].AsInteger := strtoint(edit1.text);
adotable1.Post;
end;procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.clear;
adoquery1.SQL.add(' SET IDENTITY_INSERT db.dbo.t1 on');
adoquery1.ExecSQL;
end;procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.clear;
adoquery1.SQL.add('insert into t1(a1) values('+edit1.text+')');
adoquery1.ExecSQL;
end;
在 sql查询分析器中开两个窗口 A,B在 a 窗口 中执行SET IDENTITY_INSERT db.dbo.t1 on 后
b窗口 还是无法执行insert into t1(a1,a2,a3) values(111,'aa','bb')
必须在b窗口 也执行SET IDENTITY_INSERT db.dbo.t1 on 后才行SET IDENTITY_INSERT 是局部变量??