c# - 如何使用 .NET 从现有表创建新的 VFP (OLEDB) 表?

标签 c# oledb foxpro visual-foxpro

我们有一个创建许多 Visual Foxpro (DBF) 表的应用程序。这些表中的每一个都有不同的架构,但它们都包含一个已知的日期字段。

我被要求创建另一个应用程序(在 C# 中),它将上周的数据从每个表复制到一个新表(在与源表不同的文件夹中)。不同的表将保留(例如,如果有三个源表,则将有三个目标表)。

随着时间的推移,表格可能会发生变化(例如添加新字段),因此我无法对表格结构做出假设(除了上述日期字段的存在)。

从一个表中获取数据并创建具有相同结构的新表的最简单/最佳方法是什么?

我知道如何查询表以提取数据(例如,用上周的记录填充数据集)。但是,我认为必须有更好的方法来创建新表并用结果填充它,而不是手动解析架构中的所有字段信息并使用它来重新创建目标表。

使用 FoxPro 似乎与使用 SQL Server 完全不同,每次都让我很头疼,所以我需要一些关于我的方法的指导。

生产机器上安装了 VFP 9 OLEDB 驱动程序。如果可能的话,我们宁愿不必安装太多其他东西。

最佳答案

要获得数据、表和记录的精确副本,您可以通过单个 SQL 选择通过

OleDbConnection oConn = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=C:\\SomePath");
OleDbCommand oCmd = new OleDbCommand();
oCmd.Connection = oConn;
oCmd.Connection.Open();
oCmd.CommandText = "select * from SomeTable where someCondition into table YourNewTable";
oCmd.ExecuteNonQuery();         
oConn.Close();

您的 where 子句几乎可以是任何东西,Into TABLE 子句告诉 VFP 引擎将结果集创建为一个新表,因此无需显式声明类型、列等,从一个查询数据并将其插入另一个...

一个需要考虑的问题...验证用户访问权限显然能够在您尝试创建新表的任何地方创建、读取和写入。如果需要,您甚至可以指定完全限定的路径,例如 C:\SomeOtherPath\Monthly\MyTable1...

关于c# - 如何使用 .NET 从现有表创建新的 VFP (OLEDB) 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1686530/

相关文章:

c# - 如何在 MVC View 中迭代分组的 LINQ 数据

excel - OLEDB中IMEX的默认值是多少?

indexing - Visual FoxPro 紧凑索引文件格式

ms-access - VBScript 和 Access MDB - 800A0E7A - "Provider cannot be found. It may not be properly installed"

.net - 无论使用 OleDb 的工作表名称如何,从 Excel 文档中获取第一张工作表

Android 使用的 JAVA 宏(存在吗?)

FoxPro 中的 URLEncode

c# - MVC 核心集 IHostingEnvironment 开发

c# - 如何修复 WCF "Requested Upgrade is not supported by net.tcp"错误?

c# - 无法将 Linq.IOrderedEnumerable<T> 转换为 Linq.IQueryable<T>