Dbase oledb提供程序加载数据而没有删除此记录?

时间:2011-11-24 09:04:14

标签: oledb dbase

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

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

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

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

2 个答案:

答案 0 :(得分: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 driver

答案 1 :(得分:1)

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

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