чтение файла dbase без стандартного расширения .dbf - PullRequest
1 голос
/ 16 мая 2009

Я пытаюсь прочитать файл, который является просто файлом 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"]);
            }

Конечно, это происходит сбой, потому что он не может найти файл dbase с именем test, но если я переименую файл в Test.dbf, он будет работать нормально. Я не могу переименовать файл все время, потому что стороннее приложение использует его в качестве формата файла.

Кто-нибудь знает способ чтения файла dbase без стандартного расширения в C #.

Спасибо.

1 Ответ

1 голос
/ 16 мая 2009

Что меня смущает в вашем коде, так это способ создания 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 по умолчанию, и он падает при заполнении адаптера данных, Вы не используете расширение по умолчанию. Попробуйте добавить конкретное имя файла и посмотрите, работает ли оно.

...