我们如何将DBF相关的代码迁移到c# . net

本文关键字:迁移 代码 net DBF 我们 | 更新日期: 2023-09-27 18:10:25

我有一个与Visual foxpro中dbf操作相关的代码,如下所示。

SELECT 3
USE student shared
SET FILTER TO
LOCATE FOR id=thisform.txtStudentID.Value 
谁能帮我理解每一行代码并把它转换成c# .net。把foxpro代码转换成c#有哪些步骤?在这里我使用SQL Server作为c#项目的后端。有时候我也会遇到下面这种类型的代码
Use Student Shared 

//这里直接访问数据库字段。这里他们的目标是获得所有记录,如"选择*从学生"或只有最后一个记录。默认情况下,这个学生表有6列,但在dbf文件中我们有12列。如何在c# .NET中做到这一点?

我们如何将DBF相关的代码迁移到c# . net

回答你的部分问题-这段代码是做什么的…

下面设置了一个工作区域(我已经好几年没有使用foxpro了,但我认为这在VFP的后续版本中是多余的)。工作区域只是内存中的一个空间,它与其他工作空间分开。

Select 3

下面的命令打开了一个名为'Student'的表,用于对先前打开的工作空间进行非只读访问

USE student shared

下面的命令清除表上的所有过滤器(所以如果你'BROWSE'你将得到所有的记录)

SET FILTER TO

下面的语句将把记录指针设置为一个特定的记录,其中记录的id等于当前表单上的txtstudententid文本框的值(foxpro不是强类型语言)

LOCATE FOR id=thisform.txtStudentID.Value 

对于你问题的第二部分,没有直接的方法在foxpro和c#应用程序之间进行转换。重点是Foxpro是围绕数据库构建的,不是强类型的,而c#是强类型的,可以访问数据库。如果你在谷歌上快速搜索一下,你可能会发现像Markus Egger这样的人编写的工具,可以将foxpro转换为c#。

IMHO和从企业规模的系统从VFP迁移到c#/SQL服务器的经验-如果你想在系统中这样做-停止,说服自己这是一个坏主意,只需用c#重写-选择一个最适合你需要的数据库。

很难进一步评论-你没有说明你使用的是哪个版本的foxpro -你是使用foxpro还是visual foxpro?你的应用程序有多大,背景是什么?

HTHJay

没有办法直接转换为c#。

SELECT 3

FoxPro有"工作区域"的概念-类似插槽,每个插槽中都可以有一个打开的DBF文件。这个命令说:"好的,我们正在查看工作区域3。"

在。net

中没有相应的
USE student SHARED

这将打开student。Dbf,在当前目录中,用于在工作区域3中共享访问。

SET FILTER TO

如果我们设置了一个过滤器,它将限制可用的记录,现在清除该过滤器。毫无意义,因为我们刚刚打开表格,我们没有设置过滤器。

LOCATE FOR id=thisform.txtStudentID.Value 

查找id = thisform. txtstudententid . value的第一条记录。后一部分是运行此代码的表单的自定义属性。

所有这些代码所做的就是定位student中的记录。基于值的DBF。如果您想在c#中使用OLE DB提供程序拉回该记录,您可以检查如何将DBF数据加载到DataTable中。

当表正在使用(打开)时,不需要SET FILTER TO,因此没有过滤器要清除。将FoxPro的这一部分转换为c#:

SELECT * FROM student WHERE id=thisform.txtStudentID.Value

然后必须循环结果(如果有的话)。最佳实践是使用WHERE子句值的参数来防止SQL注入。