Как читать из файла DBF в 64-битной ОС с помощью VB.Net?

Как читать из файла DBF в 64-битной ОС с помощью VB.Net?


person o12    schedule 15.03.2011    source источник


Ответы (3)


Во-первых, вам потребуются распространяемые 64-разрядные файлы доступа, доступные по адресу: ="nofollow">http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en

Затем вы можете настроить источник данных ODBC в панели управления, средствах администрирования, источниках данных (ODBC).

Затем я смог сделать это на С# со следующим: это должно быть похоже на VB.NET:

var connectionString = "Driver={Microsoft dBASE Driver (*.dbf)};" +
                                                      "Driverid=277;" +
                                                      @"Dbq=C:\temp\";

var query = "SELECT * FROM UPDATED" //file is "updated.dbf"


using (var oConn = new OdbcConnection { ConnectionString = connectionString })
            {
                try
                {
                    oConn.Open();
                    var oCmd = oConn.CreateCommand();
                    oCmd.CommandText = Query;

                    var dr = oCmd.ExecuteReader();

                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {

                // get your data from your dbf!
                        }
                    }
                }
                finally
                {
                    oConn.Close();
                }
            }
person JNadal    schedule 15.03.2011
comment
Однако будьте осторожны с драйвером dBase - он будет работать правильно, только если ваши файлы dbf действительно являются файлами dBase, а не, например, файлами FoxPro. - person Eyvind; 15.03.2011
comment
Мне не удалось найти никакой информации о том, был ли драйвер x64 FoxPro также включен в этот пакет. Если этот способ не работает для вас или вы не можете быть уверены в том, какой «вкус» DBF вы получите, вам может быть лучше просто ориентироваться на x86, как предлагает Эйвинд. Однако, если вы делаете это в библиотеке классов, имейте в виду, что это решение x86 должно будет отразиться на ваших ссылках или быть смягчено за счет введения сервисного уровня. - person JNadal; 15.03.2011

Вам нужно скомпилировать вашу программу как 32-битную; он по-прежнему будет работать нормально на 64-битной ОС. Измените целевую платформу на «x86» вместо «Любой процессор» или «x64». Затем вы можете использовать поставщик Ole Db Visual FoxPro для доступа к файлу dbf.

person Eyvind    schedule 15.03.2011

Вместо Microsoft.Jet.OLEDB... вы должны использовать Microsoft.ACE.OLEDB... в строке подключения в Win7. Дополнительную информацию можно получить на сайте www.connectionstrings.com в разделе accdb. Вы можете подключиться к файлу DBF как к таблице и запросить данные/схему.

Если ваша Win7 64-битная, а MS Office установлен 32-битный (Taskmanager winword.exe * 32), драйверы ACE будут установлены в 32-битном режиме, и, следовательно, ваша программа/исходный код не будет подключаться к файлу DBF.

Как найти.

Откройте 32-битный эмулятор ODBC в папке C:\windows\sysWoW64\odbcad32.exe и перейдите на вкладку "Драйверы". Вы должны увидеть множество драйверов для подключения, в которых вы найдете провайдера ACE.

Откройте 64-битный администратор ODBC в C:\windows\system32\odbcad32.exe и перейдите на вкладку «Драйверы». Вы должны увидеть только драйвер «SQL server» или несколько драйверов, специфичных для 64-битной версии, но не драйвер ACE.

Решение

  1. Скомпилируйте текущую программу в режиме x86, чтобы использовать 32-битные драйверы эмулятора.
  2. Другое решение — выяснить, можете ли вы удалить 32-разрядную версию MS Office и получить 64-разрядную версию. Это решит все проблемы автоматически.

Удачи

Венкат

person Venkat    schedule 23.05.2012