как подключиться к базе данных dbf - PullRequest
2 голосов
/ 29 августа 2011

Я пытаюсь подключиться к базе данных DBF, используя C # (я пробую 3 типа соединения)

string connectionString = @"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\employees.dbf;";
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\employees.dbf;Extended Properties=dBASE IV;";
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\employees.dbf;Extended Properties=dBASE IV;User ID=Admin;Password=;";

using (OdbcConnection connection = new OdbcConnection(connectionString))
{
    connection.Open();
}

, и я получил ошибку

error1:

ОШИБКА [HY024] [Microsoft] [Драйвер ODBC dBase] '(неизвестно)' не является допустимым путем.Убедитесь, что имя пути указано правильно и что вы подключены к серверу, на котором находится файл.
ОШИБКА [IM006] [Microsoft] [Диспетчер драйверов ODBC] Ошибка SQLSetConnectAttr драйвера
ОШИБКА [HY024] [Microsoft] [Драйвер ODBC dBase] '(неизвестно)' не является допустимым путем.Убедитесь, что имя пути указано правильно и что вы подключены к серверу, на котором находится файл.

или error2:

ОШИБКА [IM002] [Microsoft] [ODBC Driver Manager] Не найдено имя источника данных и не указан драйвер по умолчанию

в чем может быть проблема?

заранее спасибо

Ответы [ 3 ]

7 голосов
/ 29 августа 2011
Dim Conn As New OLEDBConnection  
Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\folder;Extended Properties=dBASE IV;User ID=Admin;Password=;"

Чтобы выбрать из таблиц базы данных, вы должны сделать следующее (например):

"SELECT * FROM tblCustomers.DBF"

(обратите внимание на .DBF после имени таблицы)

4 голосов
/ 29 августа 2011

Две вещи:

Сначала попробуйте следующую строку подключения:

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\;Extended Properties=dBASE IV;";

Обратите внимание, что вы не указываете имя файла в строке подключения (это будет частью вашего SELECT).или другие операторы), просто путь к файлу (файлам).

После того, как вы открыли соединение, именно там вы используете имя файла.Например:

OleDbCommand cmd = new OleDbCommand("SELECT * FROM Employees");

Обратите внимание, что вы не добавляете расширение ".dbf" (предполагается, что файл должен иметь расширение .dbf, иначе он не будетузнал и прочитал, по крайней мере, по моему опыту).

РЕДАКТИРОВАТЬ

У меня была «привилегия» работать с файлами DBF (от сотен до тысяч одновременно).) больше, чем хотелось бы.Если у вас все еще есть проблемы, оставьте комментарий, и я посмотрю завтра, когда я на работе - вышеупомянутое в основном не в моей голове с небольшим поиском.

0 голосов
/ 17 октября 2017

попробуйте это:

System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection ("Driver={Microsoft Visual FoxPro Driver};
SourceType = DBF;
SourceDB = " + System.IO.Path.GetFullPath(strFileName).Replace(System.IO.Path.GetFileName(strFileName), "") + ";Exclusive=No");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...