15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Как создавать и удалять DSN в Visual Basic

В данной статье демонстрируется динамическое создание и удаление Data Source Name (DSN) на лету, при помощи API функции SQLConfigDataSource.

Пример создания приложения

  1. Создайте новый проект.

  2. В закладке Advanced диалогового окошка Options в меню Tools установите Conditional Compilation Argument с именем WIN32 в 1 если Вы используете Visual Basic 4.0 32-bit, либо в 0 если Visual Basic 4.0 16-bit.

  3. Добавьте две кнопки на форму.

  4. Добавьте следующий код в 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
  5. Добавьте следующий код в событие 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
  6. Добавьте следующий код в событие 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
  7. Запустите проект.

  8. Если кликнуть на Command1, то добавится DSN с именем DSN_TEMP.

  9. Если кликнуть на Command2, то удалится DSN с именем DSN_TEMP.