Как создавать и удалять DSN в Visual Basic
В данной статье демонстрируется динамическое создание и удаление 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.
|