2010-01-14 9 views
1

J'essaie de lire un fichier dBase III .dbf en utilisant .NET et Winforms et rien de ce que j'ai essayé ne semble fonctionner. J'ai essayé quatre méthodes de connexion différentes et chacun d'entre eux se bloque sur la méthode Open. Pas d'exception, pas de timeout, pas de message d'évènement, rien. Le formulaire est juste là. Des idées sur ce qui pourrait être faux?.NET Connexion au fichier dBase .dbf

Voici les méthodes que j'ai essayées. Le fichier .dbf est à d: \ db:

private void read1() 
     { 
      string c = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\db\\;Extended Properties=dBASE III"; 
      OleDbConnection conn = new OleDbConnection(c); 
      conn.Open(); 
      MessageBox.Show("ok"); 
      conn.Close(); 

     } 

     private void read2() 
     { 
      System.Data.Odbc.OdbcConnection oConn = new System.Data.Odbc.OdbcConnection(); 
      oConn.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=D:\db;Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;"; 
      oConn.Open(); 
      System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand(); 
      oCmd.CommandText = @"SELECT * FROM D:\db\Poi.dbf"; 
      DataTable dt = new DataTable(); 
      dt.Load(oCmd.ExecuteReader()); 
      MessageBox.Show(dt.Rows.Count.ToString()); 
      oConn.Close(); 
     } 

     private void read3() 
     { 
      System.Data.Odbc.OdbcConnection oConn = new System.Data.Odbc.OdbcConnection(); 
      oConn.ConnectionString = @"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=d:\db;"; 
      oConn.Open(); 
      MessageBox.Show("ok"); 
      oConn.Close(); 
     } 

     private void read4() 
     { 
      System.Data.Odbc.OdbcConnection oConn = new System.Data.Odbc.OdbcConnection(); 
      oConn.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};datasource=d:\db\"; 
      oConn.Open(); 
      System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand(); 
      oCmd.CommandText = @"SELECT * FROM D:\db\Poi.dbf"; 
      DataTable dt = new DataTable(); 
      dt.Load(oCmd.ExecuteReader()); 
      MessageBox.Show(dt.Rows.Count.ToString()); 
      oConn.Close(); 
     } 
+0

Je veux aider, mais où je trouve un DBF déposer ce jour? =) –

Répondre

4

Essayez ceci:

using (OleDbConnection cn = new OleDbConnection(
    @"Provider=Microsoft.Jet.OLEDB.4.0;" + 
    @"Data Source=C:\full-path-without-filename;" + 
    @"Extended Properties=dBASE III;")) 
using (OleDbCommand cm = cn.CreateCommand()) 
{ 
    cn.Open(); 
    cm.CommandText = "SELECT * FROM fox_samp"; // fox_samp is your filename 
    using (OleDbDataReader dr = cm.ExecuteReader()) 
    { 
     while (dr.Read()) 
     { 
      Console.WriteLine(dr[0]); 
     } 
    } 
} 

J'ai juste couru cela sans erreurs. Et ce site peut être très utile: ConnectionStrings.com

+0

Merci, mais cela n'a pas fonctionné non plus. Il se bloque sur Open(). Je pense que quelque chose ne va pas avec le fichier ou mon ordinateur .. – dstr

+0

Je vous suggère de construire une application console et de faire un exemple très simple, comme ci-dessus; ou vous pouvez également utiliser OdbcConnection et les classes connexes –

1

Il suffit peut ne pas fonctionner depuis les systèmes 64 bits ne supportent plus pilote odbc DBF pour 64 bits, ni jet EXISTE plus ..

Questions connexes