我把一个DBF文件读入到DBGrid中来显示了,怎么将这个DBF中显示的数据一条一条写入到SQl表中?
他们有字段是相同的。可以作为条件写入
他们有字段是相同的。可以作为条件写入
解决方案 »
- 彻底吐血,300分跪求高手解答,困绕我5天的问题~
- http://blog.csdn.net/ZengMuAnSha/archive/2006/11/06/1368807.aspx
- 作QReport做报表时,如何取得组页数。
- 请问可以改变StringGrid的滚动条的颜色和形状吗,如果不能,有其它的空间可以实现吗?
- adoquery插入问题!传递参数时报错!
- 急急急,该怎样用程序做数据备份啊??在线等待,100分重谢!
- Access中自动编号是什么类型?
- 关于动态数组的问题
- 大家都用delphi正版软件开发吗
- 怎么把hotkey和API函数registerHotKey()联系起来。
- ★★★关于弹出窗口的简单问题~~~~~
- dxDBTreeview使用方法
cmd1.commandtext='insert into sql表名 values(参数列表)';
with dbgrid.datasource.dataset do begin
first;
while not eof do begin
cmd1.parameters.parambyname('参数1').value=fieldbyname('字段1').value;
cmd1.parameters.parambyname('参数2').value=fieldbyname('字段2').value;
....
....
cmd1.execute;
next;
end;
end;
-----------------------------------------
在SQLServer中执行(在程序中也可,用ADO连sqlserver)
SELECT * into bmk
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="e:\share";User ID=Admin;Password=;Extended properties=dBase 5.0')...bmk where 条件
这样就可以把e:\share中的bmk.dbf表导入到Sqlserver中,
速度是最快的
上面这个方法DBF文件必须在服务器上,如果DBF不在服务器上,就用
连接串
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp;Extended Properties="dBase 5.0;";Persist Security Info=False
SQL语句
SELECT * into aaa IN [ODBC]
[ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]
from aaa where 条件
这是直接把客户端上的DBF传上服务器的最直接方法。
-------------------------------------------------------
while (Not Query1.Eof) do
BEGIN
Table1.Insert;
Table1.FieldByName('a').AsString := Query1.FieldByName('a').AsString;
Table1.FieldByName('b').AsString := Query1.FieldByName('c').AsString;
Table1.Post;
Query.next;
1.DBF文件在SQL服务器上
一个TADOConnection连接SQLERVER服务器(可用连接向导连接到SQLSERVER服务器)
一个TADOQuery,Connect指向上面的TADOConnection(不用TADOConnection,直接设ConnectionString也可以)
ADOQuery1.ParameterCheck:=false;//必须
ADOQuery1.SQL.Text:='SELECT * into dbftable FROM OpenDataSource (''Microsoft.Jet.OLEDB.4.0'',
''Data Source="e:\share";User ID=Admin;Password=;Extended properties=dBase 5.0'')...newtable where id>100';
ADOQuery1->ExecSQL;
其中dbftable为你的dbf文件名(表名),newtable为sqlserver的表名,id>100为条件
这样就可以将dbftable.dbf的数据(id>100)的导到sqlserver的newtable 中
2.DBF不在服务器上
同样一个TADOConnection+TADOQuery或只用一个TADOQuery
只用TADOQuery的:
ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp;Extended Properties="dBase 5.0;";Persist Security Info=False';
ADOQuery1.SQL.Text:='SELECT * into newtable IN [ODBC]
[ODBC;Driver=SQL Server;UID=sa;PWD=ppp;Server=192.168.0.2;DataBase=Master;] from dbftable where id>100';
ADOQuery1.ExecSQL;
其中192.168.0.2为sqlserver服务器的IP(也可用服务器名),用户名为sa,口令为ppp,库为Master