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

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

Динамическое создание 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. Нарушение авторских прав; Мы поможем в написании вашей работы!




Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


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

Разработка товарной и ценовой стратегии фирмы на российском рынке хлебопродуктов В начале 1994 г. английская фирма МОНО совместно с бельгийской ПЮРАТОС приняла решение о начале совместного проекта на российском рынке. Эти фирмы ведут деятельность в сопредельных сферах производства хлебопродуктов. МОНО – крупнейший в Великобритании...

ОПРЕДЕЛЕНИЕ ЦЕНТРА ТЯЖЕСТИ ПЛОСКОЙ ФИГУРЫ Сила, с которой тело притягивается к Земле, называется силой тяжести...

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

Схема рефлекторной дуги условного слюноотделительного рефлекса При неоднократном сочетании действия предупреждающего сигнала и безусловного пищевого раздражителя формируются...

Уравнение волны. Уравнение плоской гармонической волны. Волновое уравнение. Уравнение сферической волны Уравнением упругой волны называют функцию , которая определяет смещение любой частицы среды с координатами относительно своего положения равновесия в произвольный момент времени t...

Медицинская документация родильного дома Учетные формы родильного дома № 111/у Индивидуальная карта беременной и родильницы № 113/у Обменная карта родильного дома...

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