我有一个DBF文件和一个索引文件。 我想读取索引文件和搜索记录满足一些条件。 (例如:使用Student.DBF和StudentName.idx搜索其StudentName以“A”开头的记录)
如何以编程方式执行此操作?
答案 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 )
方法感兴趣。