Поиск в файле DBF с использованием файла .idx - PullRequest
0 голосов
/ 02 февраля 2010

У меня есть файл DBF и индексный файл. Я хочу прочитать индексный файл и записи поиска удовлетворяют некоторому условию. (например: поиск записей, которые его StudentName начинаются с «A» с использованием Student.DBF и StudentName.idx)

Как мне сделать это программно?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2010

У меня нет кода на макушке, но если вы не хотите использовать ODBC, вам следует прочитать файлы форм ESRI, они состоят из 3 (или более) частей. ищите), файл PRJ и файл .SHP. Это может занять некоторую работу, но вы должны быть в состоянии выкопать код. Вы должны взглянуть на Sharpmap на codeplex. Это не простая задача - прочитать dbf без ODBC, но это можно сделать, и для этого есть много кода. Вам приходится иметь дело со значениями с прямым порядком байтов и значениями с прямым порядком байтов, а также с диапазоном версий файлов.

если вы перейдете здесь , вы найдете код для чтения файла dbf. в частности, вас заинтересует метод public void ReadAttributes( Stream stream ).

0 голосов
/ 02 февраля 2010

Было бы проще запросить через 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

}
...