2010-02-02 8 views
0

J'ai un fichier DBF et un fichier d'index. Je veux lire le fichier d'index et les enregistrements de recherche satisfont certaines conditions. (par exemple: rechercher des enregistrements dont son StudentName commence par "A" en utilisant Student.DBF et StudentName.idx)Recherche dans un fichier DBF en utilisant le fichier .idx

Comment faire cela par programme?

+0

Voulez-vous dire, "Comment est-ce que je fais par programme?" ou "Comment faire cela via ODBC?" –

+0

@Michael: J'ai mis à jour ma question. Merci! –

+0

donc, en utilisant par programme ODBC? ou pas? –

Répondre

0

Il serait plus facile à interroger via 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 

} 
0

Je n'ai pas le code du haut de ma tête, mais si vous ne voulez pas utiliser ODBC, alors vous devriez regarder en lisant la forme Esri fichiers, ils se composent de 3 parties (ou plus) un .DBF (ce que vous cherchez), un fichier PRJ et un fichier .SHP. Cela pourrait prendre du travail, mais vous devriez être capable de déterrer le code. Vous devriez jeter un oeil à Sharpmap sur codeplex. Ce n'est pas une tâche simple de lire un dbf sans ODBC mais cela peut être fait, et il y a beaucoup de code disponible pour cela. Vous devez gérer les valeurs big-endian et little-endian, ainsi qu'une gamme de versions de fichiers.

si vous allez here vous trouverez le code pour lire un fichier dbf. Plus précisément, vous seriez intéressé par la méthode public void ReadAttributes(Stream stream).

Questions connexes