使用.idx文件在DBF文件中搜索

时间:2010-02-02 13:57:42

标签: c# algorithm dbf dbase

我有一个DBF文件和一个索引文件。 我想读取索引文件和搜索记录满足一些条件。 (例如:使用Student.DBF和StudentName.idx搜索其StudentName以“A”开头的记录)

如何以编程方式执行此操作?

2 个答案:

答案 0 :(得分:0)

通过OleDB Connection查询最容易

using System.Data.OleDb;
using System.Data;


OleDbConnection oConn = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=C:\\PathToYourDataDirectory"); 
OleDbCommand oCmd = new OleDbCommand(); 
oCmd.Connection = oConn; 
oCmd.Connection.Open(); 
oCmd.CommandText = "select * from SomeTable where LEFT(StudentName,1) = 'A'"; 

// Create an OleDBAdapter to pull data down
// based on the pre-built SQL command and parameters
OleDbDataAdapter oDA = new OleDbDataAdapter(oCmd);
DataTable YourResults
oDA.Fill(YourResults);
oConn.Close(); 


// then you can scan through the records to get whatever
String EachField = "";
foreach( DataRow oRec in YourResults.Rows )
{
  EachField = oRec["StudentName"];
  // but now, you have ALL fields in the table record available for you

}

答案 1 :(得分:0)

我没有把代码放在头顶,但是如果你不想使用ODBC,那么你应该考虑阅读ESRI形状文件,它们由3部分(或更多)aDB组成(你是什么的正在寻找),PRJ文件和.SHP文件。它可能需要一些工作,但你应该能够挖出代码。您应该在codeplex上查看Sharpmap。读取没有ODBC的dbf并不是一项简单的任务,但它可以完成,并且有很多代码用于执行此操作。你必须处理big-endian vs little-endian值,以及一系列文件版本。

如果你去here,你会找到读取dbf文件的代码。具体来说,您会对public void ReadAttributes( Stream stream )方法感兴趣。