谁成功的用过ADO中的两个不同数据库表的复制涵数(Adodataset.clone)???? 还没解决!!!!!!在线等待!!!!~ (200分)

  • 主题发起人 主题发起人 cfx
  • 开始时间 开始时间
C

cfx

Unregistered / Unconfirmed
GUEST, unregistred user!
要求:
两个数据库DB1,DB2都有一张User表, 现在我要将DB1中的User中内容复制到DB2中的User中


如下的代码:
DesData.Clone(SourData);
DesData.UpdateBatch(arall);
而且里面的属性都已经设置locktype = ltbatchoptimic

发现实现不了我所要的要求!.


 
用循环读取,INSERT语句插入的方式应该是最快的。
 
什么数据库? 不同数据库有不同解决方案
 
谢谢各位的热心回答!!!
to 一个过客:
我的后台数据库用的是ACCESS!
 
放弃使用ACCESS,真臭,改用SQL吧!
 
各位:
给点实际的回答好吗??!
 
我试试看。多库的应该用sql语句也能实现。万一实现不了,用前台做好了。
 
Access用的Jet-SQL可以支持异构数据库的查询,就好像两个mdb里面的表在一个mdb里面
一样,也就是说可以用类似INSERT INTO ... SELECT ... FROM的形式
具体参见Access的Jet-SQL帮助,看看"IN 子句"的帮助

摘抄帮助中的一段:

说明

用 IN 子句一次只能连接一个外部数据库。
在某些情况中,path 参数可引用包含数据库文件的目录。例如,当使用 dBASE、FoxPro或 Paradox 数据库表时,path 参数将指定包含 .dbf 或 .db 文件的目录。由 destination 或 tableexpression 参数可得到表文件的名称。
为了指定非 Microsoft JET 数据库,可在名称之后附加分号 (;),并用单引号 (' ') 或 (" ") 双引号将它括入。例如可用 'dBASE IV;'
或 "dBASE IV;"这两种写法。

也可使用 DATABASE 保留字指定外部数据库。例如,以下示例指定相同的表:

... FROM Table IN "" [dBASE IV; DATABASE=C:/DBASE/DATA/SALES;];
... FROM Table IN "C:/DBASE/DATA/SALES" "dBASE IV;"

 
用一个循环不是就OK了吗?
 
用循环太慢了!!我的数据量比较大!
字段太多,写起来也麻烦
 
我也在想这个问题,不过好像access不支持。
 
试试这个
insert into db2.user select * from db1.user

 
to MichaelZhu,
你的方法不行
 
str:='insert into ['c:/ab].tab1 select * from [c:/bc].tabl2'
adoconnection.execute(str);
如果不行就用batchmove组件
 
用一个循环不就的了
 
ugvanxk的答案可以的,
 
在Win2K+D6下运行通过:
procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery1.Open;
ADOQuery2.Clone(ADOQuery1, ltUnspecified);
ADOQuery2.Open;
end;

 
to wind2000,

你的方法不行,我已经试过,
根本没有把数据导到我要的那张表去.!
 
先在表1里创建表2的连接表,再使用那个连接表,试一下
 
后退
顶部