0

我正在将数据从 dbase 导入 sql 并使用以下连接字符串来读取数据:

      "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=D:\GS\Source;"
                    + "Extended Properties=dbase 5.0;User ID=Admin;Password=;"

数据已成功读取,但我发现它也包含 DELETED 行。根据 dbase,将有一个星号作为第一个字符,但是我们发现既没有排除文件,也没有将星号作为列出现。

那么我们如何在没有删除记录的情况下加载数据呢?

4

2 回答 2

2

实际上,已删除的记录在内部标有一个标志,而不是您可以查询的“*”。但是,VFP 确实具有测试此已删除标志的功能,但仅在从单个表而不是多个/连接运行时才真正适用,因为它不知道您想知道哪个表...例如:

select * from YourTable where not deleted()

话虽如此,VFP 还有一些其他“环境”设置命令可以通过 OleDB 工作,但我从未真正尝试过。

建立连接并打开连接后,运行以下 ExecNonQuery 可能会有所帮助...

OleDbCommand oCmdTest = new OleDbCommand("SET DELETED OFF", YourConnection); OCmdTest.ExecuteNonQuery();

oCmdTest = new OleDbCommand("Select * from YourTable", YourConnection);

按原样将其执行到数据表结果集中,你应该很好。

另一部分。我不会使用 Jet OleDB,但实际上使用的是 Microsoft VFP OleDb 驱动程序

于 2011-11-25T00:14:12.057 回答
1

在 dBase 中,必须在删除命令 'pack all' 后给出,以便永久删除已删除的记录。

如果您有权访问 dBase,请使用相关文件,然后给出 pack all 命令

于 2011-11-25T13:42:21.470 回答