0

DBFファイルとインデックスファイルがあります。インデックスファイルを読みたいのですが、検索レコードが条件を満たしています。(例:Student.DBFとStudentName.idxを使用して、StudentNameが「A」で始まるレコードを検索します)

これをプログラムで行うにはどうすればよいですか?

4

2 に答える 2

0

私は頭のてっぺんからコードを持っていませんが、ODBCを使用したくない場合は、ESRIシェープファイルの読み取りを検討する必要があります。これらのファイルは、3つの部分(またはそれ以上)の.DBF(探しているもの)で構成されています。 )、PRJファイルおよび.SHPファイル。多少の作業が必要になる場合がありますが、コードを掘り下げることができるはずです。codeplexのSharpmapを見てください。ODBCなしでdbfを読み取るのは簡単な作業ではありませんが、それは可能であり、これを行うためのコードはたくさんあります。ビッグエンディアンとリトルエンディアンの値、およびさまざまなファイルバージョンも処理する必要があります。

ここに行く と、dbfファイルを読み取るためのコードが見つかります。具体的には、このpublic void ReadAttributes( Stream stream )方法に興味があります。

于 2010-02-02T14:20:14.860 に答える
0

OleDB 接続を介してクエリを実行するのが最も簡単です

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

}
于 2010-02-02T14:13:52.307 に答える