Какво представлява ConnectionString за създаване на OdbcConnection за mdb файл за достъп в x64?

Разширяване на този въпрос Какво е ConnectionString за създаване на OdbcConnection за достъп до mdb файл, бих искал да знам как да напиша връзката за свързване към .mdb файл от 64-битово приложение - освен че този път се опитвам да го направя от c++ 64-битово приложение вместо C#. Не съм сигурен дали това има значение, затова го сложих тук :)

Когато компилирам за 32 бита, мога да се свържа с моя mdb файл с

"driver={Microsoft Access Driver (*.mdb)};Dbq=mlog.mdb;UID=;PWD="

Не съм сигурен дали това е оптималният начин, но работи.

Сега трябва да компилирам приложението си в 64 бита. низът за връзка от по-горе вече не работи, затова проверих http://www.connectionstrings.com/access/ и опитах

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=mlog.mdb;Persist Security Info=False;"

но без успех.

използвам

ret = SQLDriverConnect(dbc, 0, connectionstring, SQL_NTS, outstr, 1024, &outstrlen, SQL_DRIVER_NOPROMPT);
        if (SQL_SUCCEEDED(ret)) ...

да опитате да се свържете. Но винаги се проваля. когато извикам SQLGetDiagRec(), той връща празни низове.

Инсталирах и 64-битовите драйвери на Access 2010. Проверява се c:\windows\system32\odbcad32.exe, че има инсталиран "Драйвер за достъп на Microsoft (*.mdb, *.accdb)", версия 14.00.7010.1000 в ACEODBC.DLL.

какво не е наред тук


person marc40000    schedule 18.10.2013    source източник
comment
Имате ли 64-битовата версия на Access Database Engine инсталиран на вашата машина?   -  person Gord Thompson    schedule 19.10.2013
comment
Мислех, че този въпрос ще възникне, затова добавих бележка за това в края на въпроса, като го редактирах.   -  person marc40000    schedule 19.10.2013
comment
Не съм работил с Visual C++, но в C# обектите на база данни Sql... са специфични за SQL Server и няма да работят с OLEDB драйвери за Access (и други бази данни). Вместо това трябва да се използват обектите OleDb.... Има ли OleDbDriverConnect еквивалент на SQLDriverConnect обекта, който в момента се опитвате да използвате?   -  person Gord Thompson    schedule 19.10.2013
comment
Хм интересно. Може би си прав. Но още не знам. Винаги ме бъркат какво е JET, ODBC, OLDDB, ADODB. Има тази страница msdn.microsoft.com/ en-us/library/ms692897%28v=vs.85%29.aspx, което грубо го обобщава, с изключение на JET. Така че трябва ли да използвам/пробвам OLEDB или ADODB?   -  person marc40000    schedule 19.10.2013
comment
Отговорът тук предполага, че ADO е по-лесен за използване от OLEDB от C/C++ приложения.   -  person Gord Thompson    schedule 19.10.2013


Отговори (1)


Ако някой друг търси решението, OdbcConnection 64 бита може да се свърже с бази данни на Access с този низ за връзка:

Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=X:\fullpath\database.mdb;

Или, ако имате нужда от вход:

Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=X:\fullpath\database.accdb;Uid=MyLogin;Pwd=MyPassword;

Разбира се, трябва да инсталирате драйвера за 64-битов достъп до база данни.

Можете да го намерите тук: https://www.microsoft.com/en-us/download/details.aspx?id=54920

person ONC    schedule 25.06.2021