简体   繁体   中英

Get data in a .dbf file using c#

How can I get the data in a.dbf file using c#??

What I want to do is to read the data in each row (same column) to further process them.

Thanks.

You may create a connection string to dbf file , then using OleDb, you can populate a dataset, something like:

string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=directoryPath;Extended Properties=dBASE IV;User ID=Admin;Password=;";
using (OleDbConnection con = new OleDbConnection(constr))
{
    var sql = "select * from " + fileName;
    OleDbCommand cmd = new OleDbCommand(sql, con);
    con.Open();
    DataSet ds = new DataSet(); ;
    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
    da.Fill(ds);
}

Later you can use the ds.Tables[0] for further processing.

You may also check this article Load a DBF into a DataTable

I found out the accepted answer didn't work for me, as the.dbf files I'm working with are nested in a hierarchy of directories that makes the paths rather long, which, sadly, cause the OleDbCommand object to throw.

I found a neat little library that only needs a file path to work. Here's a little sample adapted from the examples on its GitHub page:

var file = "C:\\Path\\To\\File.dbf";
using (var dbfDataReader = new DbfDataReader(file))
{
    while (dbfDataReader.Read())
    {
        var foo = Convert.ToString(dbfDataReader["FOO"]);
        var bar = Convert.ToInt32(dbfDataReader["BAR"]);
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM