Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将DBF相关的代码迁移到C.NET?_C#_Foxpro_Visual Foxpro - Fatal编程技术网

C# 如何将DBF相关的代码迁移到C.NET?

C# 如何将DBF相关的代码迁移到C.NET?,c#,foxpro,visual-foxpro,C#,Foxpro,Visual Foxpro,我有一个与visualfoxpro中dbf操作相关的代码,如下所示 SELECT 3 USE student shared SET FILTER TO LOCATE FOR id=thisform.txtStudentID.Value 有人能帮我理解每行代码并转换成C.net吗?将foxpro代码转换成C需要采取哪些步骤?在这里,我使用SQLServer作为C项目的后端。有时我也会遇到以下类型的代码 Use Student Shared //这里是直接访问数据库字段。它们的目标是从s

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

SELECT 3
USE student shared

SET FILTER TO

LOCATE FOR id=thisform.txtStudentID.Value 

有人能帮我理解每行代码并转换成C.net吗?将foxpro代码转换成C需要采取哪些步骤?在这里,我使用SQLServer作为C项目的后端。有时我也会遇到以下类型的代码

Use Student Shared 

//这里是直接访问数据库字段。它们的目标是从student或仅从last record获取所有记录,如select*。默认情况下,此student表有6列,但在dbf文件中有12列。如何在C.NET中做到这一点?

回答您的部分问题-这段代码的作用是什么

下面设置了一个工作区,我已经有几年没有使用foxpro了,但我认为在VFP的后续版本中这是多余的。工作区只是内存中的一个空间,与其他工作空间保持一定的距离

Select 3
下面打开一个名为“Student”的表,用于对以前打开的工作区进行非只读访问

USE student shared
下面将清除表上的所有筛选器,因此如果“浏览”,将获得所有记录

SET FILTER TO
下面将设置指向特定记录的记录指针,其中id等于当前表单foxpro上的txtStudentID textbox值的记录不是强类型语言

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

根据将企业级系统从VFP迁移到c/SQL server的经验,如果您想用系统完成这项工作,请停止,说服自己这是个坏主意,然后用c重新编写—选择一个最适合您需要的数据库

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


Jay

回答您的部分问题-此代码的作用是什么

下面设置了一个工作区,我已经有几年没有使用foxpro了,但我认为在VFP的后续版本中这是多余的。工作区只是内存中的一个空间,与其他工作空间保持一定的距离

Select 3
下面打开一个名为“Student”的表,用于对以前打开的工作区进行非只读访问

USE student shared
下面将清除表上的所有筛选器,因此如果“浏览”,将获得所有记录

SET FILTER TO
下面将设置指向特定记录的记录指针,其中id等于当前表单foxpro上的txtStudentID textbox值的记录不是强类型语言

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

根据将企业级系统从VFP迁移到c/SQL server的经验,如果您想用系统完成这项工作,请停止,说服自己这是个坏主意,然后用c重新编写—选择一个最适合您需要的数据库

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


Jay

无法直接将其转换为C

SELECT 3
FoxPro有“工作区”的概念,比如插槽,每个插槽中都可以有一个打开的DBF文件。这个命令说OK-我们正在查看工作区3

SET FILTER TO
这在.NET中没有等价物

USE student SHARED
这将打开当前目录中的student.dbf,以便在工作区3中共享访问

SET FILTER TO
如果我们有一个过滤器集,它将限制哪些记录可用,请立即清除该过滤器。毫无意义,因为我们刚刚打开表,没有设置过滤器

LOCATE FOR id=thisform.txtStudentID.Value 
查找id=thisform.txtStudentID.Value的第一条记录。后一部分是运行此代码的窗体的自定义属性


因此,这段代码所做的只是根据一个值在student.dbf中定位一条记录。如果您想使用OLEDB提供程序在C中拉回该记录,您可以检查

无法直接将其转换为C

SELECT 3
FoxPro有“工作区”的概念,比如插槽,每个插槽中都可以有一个打开的DBF文件。这个命令说OK-我们正在查看工作区3

SET FILTER TO
这在.NET中没有等价物

USE student SHARED
这将打开当前目录中的student.dbf,以便在工作区3中共享访问

SET FILTER TO
如果我们有一个过滤器集,它将限制哪些记录可用,请清除该过滤器集 现在就走。毫无意义,因为我们刚刚打开表,没有设置过滤器

LOCATE FOR id=thisform.txtStudentID.Value 
查找id=thisform.txtStudentID.Value的第一条记录。后一部分是运行此代码的窗体的自定义属性

因此,这段代码所做的只是根据一个值在student.dbf中定位一条记录。如果要使用OLEDB提供程序在C中拉回该记录,可以选中“不需要将筛选器设置为”,因为正在使用的表已打开,因此没有要清除的筛选器。要将FoxPro的此位转换为C:

选择*FROM student,其中id=thisform.txtStudentID.Value

然后,如果有结果,则必须循环结果。最佳做法是为WHERE子句值使用一个参数,以防止SQL注入。

不需要将筛选器设置为,因为正在使用的表已打开,因此没有要清除的筛选器。要将FoxPro的此位转换为C:

选择*FROM student,其中id=thisform.txtStudentID.Value


然后,如果有结果,则必须循环结果。最佳做法是使用WHERE子句值的参数来防止SQL注入。

在上面的问题中,您没有告诉我们要针对哪个数据库。你的目标是从C语言与FoxPro数据库对话,还是将数据库导出到某种形式的基于SQL的数据库?lang ref:我相信有一种方法,你可以使用ADO.NET通过C语言直接将命令传递到数据库。不需要转换。在上面的问题中,您没有告诉我们您要针对哪个数据库。你的目标是从C语言与FoxPro数据库对话,还是将数据库导出到某种形式的基于SQL的数据库?lang ref:我相信有一种方法,你可以使用ADO.NET通过C语言直接将命令传递到数据库。不需要转换。Jay-字符串和整数之间的转换不会在幕后发生。对用另一种技术重新编写它是绝对可行的,但有时必须有一个过渡阶段,该技术可能需要访问DBF数据。有时我遇到以下类型的代码也使用Student Shared//直接访问数据库字段。他们的目标是从默认情况下,这个学生表有6列,但在dbf文件中我们有12列。在C.NET中怎么能做到这一点?@AlanB是的,你是对的-正在考虑完全不同的事情,并更新了我的答案。Jay-字符串和整数之间的转换不会在幕后发生。对用另一种技术重新编写它是绝对可行的,但有时必须有一个过渡阶段,该技术可能需要访问DBF数据。有时我遇到以下类型的代码也使用Student Shared//直接访问数据库字段。他们的目标是从默认情况下,这个学生表有6列,但在dbf文件中我们有12列。如何在C.NET中做到这一点?@AlanB是的,你是对的-正在考虑一些完全不同的问题,并更新了我的答案。只想指出,定位程序会找到符合条件的第一条记录。可能还有其他记录。只想指出,定位程序会找到符合条件的第一条记录。可能还有其他人。