1

我正在尝试读取一个只是 dbase 文件但没有标准扩展名的文件,该文件类似于:

测试数据

我正在使用这段代码来尝试读取文件:

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 文件的方法。

谢谢。

4

1 回答 1

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 扩展来确定你想要什么文件,并且当你填充数据适配器时它会崩溃' t 使用默认扩展名。尝试添加特定的文件名,看看它是否有效。

于 2009-05-16T10:03:42.520 回答