我公司希望慢慢切换一些用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)
提前致谢。
答案 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连接已经有一段时间了,但是你到了那里。