将VB.net数据表插入Visual Foxpro表

时间:2013-09-10 20:55:45

标签: vb.net tsql oledb visual-foxpro

我公司希望慢慢切换一些用Visual FoxPro 6.0编写的旧程序。问题是我们有一堆仍然引用FoxPro表的程序。

我有一个查询,可以将信息提取到vb.net中的数据表。如何将数据表中的信息插入FoxPro表中。

这是放入数据表的初始查询。

 Dim SConn As New OleDbConnection(conn)
 Dim da As OleDbDataAdapter
 Dim dt As New DataTable
 Dim sSql As String = "SELECT DISTINCT * FROM DWEmployee where cono <> 'XX' AND officeno <> 'XX' AND cono <> '' AND officeno <> ''"

 SConn.Open()
 da = New OleDbDataAdapter(sSql, SConn)
 da.SelectCommand.CommandTimeout = 90
 da.Fill(dt)
 SConn.Close()

在VB.net中复制这个Foxpro代码需要做什么

select distinct * from (the data table) into table gp_emps

如果我需要它,这将是我的FoxPro表的连接字符串。

Dim FConnString As String = "Provider=vfpoledb;Data Source=Z:\update_dwprm01\gp_emps.DBF;Collating Sequence=general;"
Dim FPdbConnection As New OleDbConnection(FConnString)

提前致谢。

1 个答案:

答案 0 :(得分:0)

您似乎走在了正确的轨道上。一些小问题。连接字符串应该具有提供者

提供商= vfpoledb.1;

字符串的数据源组件应指向.dbf文件所在的物理目录,而不是特定的.DBF文件本身。

数据源= Z:\ YourShareOnServer \ SomePath

查询本身看起来没问题,因为它已编码。但是,当你更多地了解.net选择,插入,更新,删除时,你肯定需要考虑使用PARAMETERIZED查询来防止SQL注入(尽管VFP不实用,因为它只会阻止注释/黑客尝试),但在练习中仍然很好。

建立你的命令并拥有“?”作为“参数”的占位符,然后按照与“?”相同的顺序添加参数查询中的展示位置,例如:

dim OleDbCommand oCmd = new OleDbCommand();
oCmd.CommandText = "SELECT DISTINCT * from DWEmployee " _
                 + "where cono <> ? and officeno <> ? AND cono <> '' AND officeno <> ''"

' Only sampling with first 2 as parameters to get the idea...    
oCmd.Parameters.Add( "parmCONO", "XX" );
oCmd.Parameters.Add( "parmOffice", "XX" );

SConn.Open()
da = New OleDbDataAdapter(oCmd, SConn)
da.SelectCommand.CommandTimeout = 90

继续填写数据表......

我有很多关于VFP,OleDB和C#的帖子,但原则都是一样的。使用OleDB连接已经有一段时间了,但是你到了那里。