sql.Add('insert into b2 select a,b from b1 in ''C:\Documents and Settings\Administrator\桌面\sss\test1.mdb''');自己参考着改一下就可以了 另外插入前最好判断一下要加的数据是不是在另一张表中已经存在 :)
procedure TForm1.Button2Click(Sender: TObject); begin with adoquery1 do//adoquery的连接字符串要设置好 begin close; sql.Clear; sql.Add('insert into 表2(字段1,字段2) select 字段1,字段2 from 表1 '); ExecSQL; end; end;
非常感谢楼上几位大哥~~~表1(字段a,b,c),,表2(字段a,b,d), 其中两个表都有字段a,b,且a,b是相同的结构,,, 表1初始为空... 相当于把表2的a,b的数据复制到表1的a,b中,, 如果只是: sql.Add('insert into 表2(a,b) select a,b from 表1 '); 会不会引起两个表的冲突呀??insert应该是插入,但本身表2也有a,b字段呀... ???
使用insert into table select ***直接插入是最方便快捷的,但要考虑到你表2中的数据是否和被导入的数据存在冲突,如果你的表2没有主键之类的限制,就可以直接用,如果有。那就比较一下。
sql.Add('insert into aa(a,b) select a,b from bb in "C:\Data.mdb" ');delphi执行后,一直提示insert into语法错误....为什么呀??????????a,b是两个表中相同结构的字段呀,,,bb中还有另一个字段是aa没有的,所以不参加导入..
我觉得在sql.Add('insert into aa(a,b) select a,b from bb in "C:\Data.mdb" '); 中可以把“In...”之类的去掉好了,因为在你用的ADOQUERY,所连的ADOCONNECTION中已经指定了数据库了啊?
insert_str := 'insert into [' + new_database + '].test select * FROM [' + old_database + '].test '; conn.Execute(insert_str);new_database和old_database是指数据库的路径,可以是相对路径。
另外插入前最好判断一下要加的数据是不是在另一张表中已经存在
:)
用:adoconnection,adodataset之类的东西实现,,,,,
------------------------------------
我建议楼主还是弄一本关于DELPHI数据库编程的书,好好看看,了解一下adoconnection,adoquery这些组件,另外,你可以搜索一下以前的帖子,类似的问题已解决的有很多。
path:是路径
begin
with adoquery1 do//adoquery的连接字符串要设置好
begin
close;
sql.Clear;
sql.Add('insert into 表2(字段1,字段2) select 字段1,字段2 from 表1 ');
ExecSQL;
end;
end;
用:adoconnection,adodataset之类的东西实现,,,,,
-------------
哎
无语
因此个人的思路是
首先用connection连接源数据库 查出数据集 放在adodataset中
甚至可以放在一个多维数组也无妨
之后在切换connection连接到目的数据库 把数据插入
其中两个表都有字段a,b,且a,b是相同的结构,,,
表1初始为空...
相当于把表2的a,b的数据复制到表1的a,b中,,
如果只是: sql.Add('insert into 表2(a,b) select a,b from 表1 ');
会不会引起两个表的冲突呀??insert应该是插入,但本身表2也有a,b字段呀...
???
中可以把“In...”之类的去掉好了,因为在你用的ADOQUERY,所连的ADOCONNECTION中已经指定了数据库了啊?
conn.Execute(insert_str);new_database和old_database是指数据库的路径,可以是相对路径。