Проблема Odbc32 после обновления фреймворка в 64 бит.
Всем Привет,
Я недавно обновил свой vb.net настольное приложение winform от framework 4.0 до 4.6.1.
Я уже давно использую odbc32.dll для моего запроса, связанного с sql server.
Он больше не работает в 4.6.1.
Он потерпел неудачу в SQLAllocHandle(SQL_HANDLE_DBC, hEnv, hDbc)
Ошибка : Система.AccessViolationException: 'попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена.'
Это только ошибка в 64 битах, она прекрасно работает в 32 битах.
Пожалуйста, поделитесь со мной своей мудростью, большое вам спасибо
Что я уже пробовал:
#Region "DLL Imports" Private Declare Function SQLAllocEnv Lib "odbc32.dll" (ByRef phenv As Integer) As Integer Private Declare Function SQLAllocHandle Lib "odbc32.dll" (ByVal hType As Integer, ByVal hInput As Integer, ByRef phOutput As Integer) As Integer Private Declare Function SQLBrowseConnect Lib "odbc32.dll" (ByVal hDbc As Integer, ByVal szConnStrIn As String, ByVal cbConnStrIn As Integer, ByVal szConnStrOut As String, ByVal cbConnStrOutMax As Integer, ByRef pcbconnstrout As Integer) As Integer Private Declare Function SQLDisconnect Lib "odbc32.dll" (ByVal hDbc As Integer) As Integer Private Declare Function SQLFreeConnect Lib "odbc32.dll" (ByVal hDbc As Integer) As Integer Private Declare Function SQLFreeEnv Lib "odbc32.dll" (ByVal hEnv As Integer) As Integer Private Const SQL_HANDLE_DBC = 2 #End Region Public Function GetSQLServers() As String Dim retCode As Integer Dim hDbc As Integer Dim hEnv As Integer Dim strCon As String Dim strOutCon As String Dim intConLenOut As Integer strCon = "DRIVER={SQL Server};" strOutCon = Space(1000) retCode = SQLAllocEnv(hEnv) retCode = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, hDbc) retCode = SQLBrowseConnect(hDbc, strCon, Len(strCon), strOutCon, Len(strOutCon) + 2, intConLenOut) End Function