读取没有标准.dbf扩展名的dbase文件

时间:2009-05-16 08:47:19

标签: c# oledb dbase

我正在尝试读取一个只是dbase文件但没有标准扩展名的文件,如下所示:

TEST.DAT

我正在使用此代码块来尝试读取文件:

string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Temp;Extended Properties=dBase III";
            OleDbConnection dBaseConnection = new OleDbConnection(ConnectionString);
            dBaseConnection.Open();

            OleDbDataAdapter oDataAdapter = new OleDbDataAdapter("SELECT * FROM Test", ConnectionString);
            DataSet oDataSet = new DataSet();
            oDataAdapter.Fill(oDataSet);//I get the error right here...
            DataTable oDataTable = oDataSet.Tables[0];
            foreach (DataRow dr in oDataTable.Rows)
            {
                Console.WriteLine(dr["Name"]);
            }

当然这会崩溃,因为它无法找到名为test的dbase文件,但如果我将文件重命名为Test.dbf则可以正常工作。我无法真正重命名该文件,因为第三方应用程序将其用作文件格式。

有没有人知道如何在C#中读取没有标准扩展名的dbase文件。

感谢。

1 个答案:

答案 0 :(得分:1)

让您对代码感到困惑的是您创建ConnectionString的方式。我会这样做:

string databaseFile = "test.dat";
string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Temp\" + databaseFile +";Extended Properties=dBase III";

在路径的数据源部分设置文件名时,无论文件类型/扩展名是什么,我都不会遇到任何问题。

对于SELECT语句,“SELECT * FROM Test”正在从数据库中名为“Test”的表中选择所有数据,而不是名为“Test”的文件。

我没有使用dBase文件,但我的猜测是,您的数据源足以让C#使用默认的dBase扩展来找出您想要的文件,并且在填充数据适配器时崩溃您没有使用默认扩展名。尝试添加特定的文件名,看看它是否有效。