Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Динамическое создание DSN





Поскольку вы уже знаете, какая и где хранится DSN-информация, естественным является вопрос, нельзя ли просто создать запись в Windows Registry с необходимыми данными. Конечно, ответ на этот вопрос является положительным и в этом разделе приводится соответсвующий код, но при этом все-таки обязательно следует учитывать, что это не самый безопасный метод создания DSN, особенно не на своем собственном компьютере. Поэтому, если у вас появится желание создавать DSN именно таким образом, предварительно предупредите об этом того, кто отвечает за работоспособность данного компьютера. В любом случае перед проведением испытаний следует сохранять Windows Registry для возможного последующего восстановления.

Во-первых, можно использовать API-функцию SQLConfigDataSource, полную информацию о которой можно найти по адресу http://msdn.microsoft.com/library/en-us/odbc/htm/odbcsqlconfigdatasource.asp. Во-вторых, является просто использовать соответствующие API-вызовы для непосредственной записи в Registry. Справочная информация о работе с Registry находится по адресу http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/registry_reference.asp.

 

В листинге 22.11 приводится пример кода для создания DSN при выполнении приложения с использованием API-функции SQLConfigDataSource.

Листинг 22.11 Динамическое создание DSN из VB-кода

1: Private Const REG_SZ = 1

2: Private Const HKEY_CURRENT_USER = &H80000001

3:

4: Private Declare Function RegCreateKey _

5: Lib "advapi32.dll" Alias "RegCreateKeyA" (_

6: ByVal hKey As Long, _

7: ByVal lpSubKey As String, _

8: phkResult As Long) As Long

9:

10: Private Declare Function RegSetValueEx _

11: Lib "advapi32.dll" Alias "RegSetValueExA" (_

12: ByVal hKey As Long, _

13: ByVal lpValueName As String, _

14: ByVal Reserved As Long, _

15: ByVal dwType As Long, _

16: lpData As Any, _

17: ByVal cbData As Long) As Long

18:

19: Private Declare Function RegCloseKey _

20: Lib "advapi32.dll" (_

21: ByVal hKey As Long) As Long

22:

23:

24: Sub CreateDSNTest()

25: Dim lngKeyHandle As Long

26: Dim lngResult As Long

27: Dim strDatabaseName As String

28: Dim strDataSourceName As String

29: Dim strDescription As String

30: Dim strDriverName As String

31: Dim strDriverPath As String

32: Dim strRegional As String

33: Dim strAutoTranslate As String

34: Dim strLastUser As String

35: Dim strServer As String

36:

37: strDataSourceName = "DSNtest"

38: strDatabaseName = "finansD"

39: strDescription = ""

40: strAutoTranslate = "No"

41: strLastUser = "Nata"

42: strDriverPath = "C:\\WINDOWS\\System32\\sqlsrv32.dll"

43: strRegional = "Yes"

44: strServer = "HOMEVLAD"

45: strDriverName = "SQL Server"

46:

47: 'После выполнения этого кода вы создаете ключ для

48: 'фактической DSN-информации, вызывая функцию RegCreateKey:

49: lngResult = RegCreateKey(HKEY_CURRENT_USER, _

50: "SOFTWARE\ODBC\ODBC.INI\" & _

51: strDataSourceName, lngKeyHandle)

52:

53: 'В качестве следующего шага задаем значения, связанные с этим

54: 'новым ключом, вызывая функцию RegSetValueEx:

55: lngResult = RegSetValueEx(lngKeyHandle, _

56: "Database", 0&, REG_SZ, _

57: ByVal strDatabaseName, _

58: Len(strDatabaseName))

59: lngResult = RegSetValueEx(lngKeyHandle, _

60: "Description", 0&, REG_SZ, _

61: ByVal strDescription, _

62: Len(strDescription))

63: lngResult = RegSetValueEx(lngKeyHandle, _

64: "Driver", 0&, REG_SZ, _

65: ByVal strDriverPath, _

66: Len(strDriverPath))

67: lngResult = RegSetValueEx(lngKeyHandle, _

68: "Server", 0&, REG_SZ, _

69: ByVal strServer, _

70: Len(strServer))

71: lngResult = RegSetValueEx(lngKeyHandle, _

72: "LasUser", 0&, REG_SZ, _

73: ByVal strLastUser, _

74: Len(strLastUser))

75: lngResult = RegSetValueEx(lngKeyHandle, _

76: "Regional", 0&, REG_SZ, _

77: ByVal strRegional, _

78: Len(strRegional))

79: lngResult = RegSetValueEx(lngKeyHandle, _

80: "AutoTranslate", 0&, REG_SZ, _

81: ByVal strAutoTranslate, _

82: Len(strAutoTranslate))

83:

84:

85: ' После присвоения необходимых значений

86: 'закрываем ключ, используя RegCloseKey:

87: lngResult = RegCloseKey(lngKeyHandle)

88:

89: ‘ Cоздание второго Registry-ключа, присваивание ему

90: 'значения, закрытие ключа:

91: lngResult = RegCreateKey(HKEY_CURRENT_USER, _

92: "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", _

93: lngKeyHandle)

94: lngResult = RegSetValueEx(lngKeyHandle, _

95: strDataSourceName, 0&, REG_SZ, _

96: ByVal strDriverName, Len(strDriverName))

97: lngResult = RegCloseKey(lngKeyHandle)

98:

99: End Sub

В заключение отметим, что для доступа к данным, которые хранятся на SQL Server, можно обойтись без DSN.







Дата добавления: 2015-09-04; просмотров: 434. Нарушение авторских прав; Мы поможем в написании вашей работы!




Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...


Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

Этапы творческого процесса в изобразительной деятельности По мнению многих авторов, возникновение творческого начала в детской художественной практике носит такой же поэтапный характер, как и процесс творчества у мастеров искусства...

Тема 5. Анализ количественного и качественного состава персонала Персонал является одним из важнейших факторов в организации. Его состояние и эффективное использование прямо влияет на конечные результаты хозяйственной деятельности организации.

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

Studopedia.info - Студопедия - 2014-2025 год . (0.012 сек.) русская версия | украинская версия