在ado中,表名和库名是不能作为参数的 你可以采用如下形势 var strtablename1,strtablename2,strfieldname,sqlstr:string ... strtablename1:='库名1.表名1'; strtablename2:='库名2.表名2'; strfielname:='...' sqlstr:='insert into '+strtablename1+' '+strfielname+' select '+strfielname+' from '+strtablename2 adoquery1.sql.add(sqlstr); adoquery1.execsql;以上只是思路,不是精确代码,自己完善吧
to fredfei(飞飞) 可是adoquery能够对两个库同时操作吗?它的connection属性不是只能选择一个数据库连接吗?
to liang_z(千山一刀之忍者神龟) ,ihihonline(小小->充电中……) 在ado中,表名和库名是不能作为参数的,而在query中可以,所以它能同时对两个数据库进行操作啊
在delphi中使用adoquery实现:adoquery1,adoquery2分别分别连接到数据库中的表1,表2: adoquery1.close; adoquery2.close; adoquery1.sql.clear; adoquery2.sql.clear; adoquery1.sql.add('select field1 from table1'); adoquery2.sql.add('select field1 from table2'); adoquery1.open; adoquery2.open while not adoquery1.eof do begin adoquery2.insert; adoquery2.fieldbyname('field1').value:=adoquery1.fieldbyname('field1').value; adoquery1.next; end; 以上只是演示表中只有一个field的情况,多field类似
只是连接不一样,
用Build一个ConnectString不就可以了吗?
你可以采用如下形势
var strtablename1,strtablename2,strfieldname,sqlstr:string
...
strtablename1:='库名1.表名1';
strtablename2:='库名2.表名2';
strfielname:='...'
sqlstr:='insert into '+strtablename1+' '+strfielname+' select '+strfielname+' from '+strtablename2
adoquery1.sql.add(sqlstr);
adoquery1.execsql;以上只是思路,不是精确代码,自己完善吧
可是adoquery能够对两个库同时操作吗?它的connection属性不是只能选择一个数据库连接吗?
在ado中,表名和库名是不能作为参数的,而在query中可以,所以它能同时对两个数据库进行操作啊
adoquery1.close;
adoquery2.close;
adoquery1.sql.clear;
adoquery2.sql.clear;
adoquery1.sql.add('select field1 from table1');
adoquery2.sql.add('select field1 from table2');
adoquery1.open;
adoquery2.open
while not adoquery1.eof do
begin
adoquery2.insert;
adoquery2.fieldbyname('field1').value:=adoquery1.fieldbyname('field1').value;
adoquery1.next;
end;
以上只是演示表中只有一个field的情况,多field类似
可是这样一条一条的插会很慢的啊
上面的例子是我以前做过的。只不过我改变了名字而已,绝对可以。
可以用链接表,将表链接后可以作为库内的表一样的用。
用TBatchmove如果实现呢to clearlake()
可否给个简单的例子
我实在是搞不定,你是否可以给我一段程序,麻烦你了,不好意思
链接表是什么意思,不懂,能否解释一下呢:)
TADODataSet;//查询数据(使用Sql)
TADOCommand;//操作数据(添加、删除、修改)(使用Sql)