使用c#在.dbf文件中获取数据

use*_*319 11 c# dbf

如何使用c#在.dbf文件中获取数据?

我想要做的是读取每行(同一列)中的数据以进一步处理它们.

谢谢.

Hab*_*bib 18

您可以创建一个连接字符串到dbf文件,然后使用OleDb,您可以填充数据集,如:

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);
            }
Run Code Online (Sandbox Code Playgroud)

稍后您可以使用ds.Tables[0]进一步处理.

您还可以查看本文将DBF加载到DataTable中

  • 你应该使用`directoryPath`而不是`yourfilepath`来避免误导......或者使用特定的例子,例如:`c:\ folder` (2认同)

Ale*_*erc 5

我发现接受的答案对我不起作用,因为我正在使用的 .dbf 文件嵌套在目录层次结构中,这使得路径相当长,可悲的是,这会导致OleDbCommand对象抛出。

我找到了一个整洁的小库,只需要一个文件路径即可工作。这是改编自其 GitHub 页面上的示例的小示例:

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"]);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这个库确实对我来说是开箱即用的。https://github.com/henck/dBASE.NET (3认同)