В данной статье демонстрируется динамическое
создание и удаление Data Source Name (DSN) на лету, при
помощи API функции SQLConfigDataSource.
Пример создания приложения
Создайте новый проект.
В закладке Advanced диалогового окошка Options в меню
Tools установите Conditional Compilation Argument с именем WIN32 в 1
если Вы используете Visual Basic 4.0 32-bit, либо в 0 если
Visual Basic 4.0 16-bit.
Добавьте две кнопки на форму.
Добавьте следующий код в General Declarations:
Option Explicit
'Объявление констант
Private Const ODBC_ADD_DSN = 1 ' Добавляем источник данных
Private Const ODBC_CONFIG_DSN = 2 ' Настраиваем источник данных
Private Const ODBC_REMOVE_DSN = 3 ' Удаляем источник данных
Private Const vbAPINull As Long = 0& ' NULL указатель
'Объявление функции
#If WIN32 Then
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _
(ByVal hwndParent As Long, ByVal fRequest As Long, _
ByVal lpszDriver As String, ByVal lpszAttributes As String) _
As Long
#Else
Private Declare Function SQLConfigDataSource Lib "ODBCINST.DLL" _
(ByVal hwndParent As Integer, ByVal fRequest As Integer, ByVal _
lpszDriver As String, ByVal lpszAttributes As String) As Integer
#End If
Добавьте следующий код в событие Click кнопки
Command1:
#If WIN32 Then
Dim intRet As Long
#Else
Dim intRet As Integer
#End If
Dim strDriver As String
Dim strAttributes As String
'Устанавливаем драйвер на SQL Server.
strDriver = "SQL Server"
'Устанавливаем атрибуты, разделённые нулями (null).
strAttributes = "SERVER=SomeServer" & Chr$(0)
strAttributes = strAttributes & "DESCRIPTION=Temp DSN" & Chr$(0)
strAttributes = strAttributes & "DSN=DSN_TEMP" & Chr$(0)
strAttributes = strAttributes & "DATABASE=pubs" & Chr$(0)
'Чтобы показать диалог, используем Form1.Hwnd вместо vbAPINull.
intRet = SQLConfigDataSource(vbAPINull, ODBC_ADD_DSN, _
strDriver, strAttributes)
If intRet Then
MsgBox "DSN Created"
Else
MsgBox "Create Failed"
End If
Добавьте следующий код в событие Click кнопки Command2:
#If WIN32 Then
Dim intRet As Long
#Else
Dim intRet As Integer
#End If
Dim strDriver As String
Dim strAttributes As String
'Устанавливаем драйвер на SQL Server.
strDriver = "SQL Server"
'Устанавливаем атрибуты, разделённые нулями (null).
strAttributes = "DSN=DSN_TEMP" & Chr$(0)
'Чтобы показать диалог, используем Form1.Hwnd вместо vbAPINull.
intRet = SQLConfigDataSource(vbAPINull, ODBC_REMOVE_DSN, _
strDriver, strAttributes)
If intRet Then
MsgBox "DSN Deleted"
Else
MsgBox "Delete Failed"
End If
Запустите проект.
Если кликнуть на Command1, то добавится DSN с именем
DSN_TEMP.
Если кликнуть на Command2, то удалится DSN с именем
DSN_TEMP.