我将数据从dbase导入sql并使用以下连接字符串来读取数据:
"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=D:\GS\Source;"
+ "Extended Properties=dbase 5.0;User ID=Admin;Password=;"
数据读取成功,但我发现它也包含DELETED行。根据dbase,会有一个星号作为第一个字符,但是我们发现文件既不被排除也不是星号作为列。
那么如何在没有删除记录的情况下加载数据呢?
答案 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命令