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

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

Динамическое создание 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 оперирует с двумя категориями...


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

Билет №7 (1 вопрос) Язык как средство общения и форма существования национальной культуры. Русский литературный язык как нормированная и обработанная форма общенародного языка Важнейшая функция языка - коммуникативная функция, т.е. функция общения Язык представлен в двух своих разновидностях...

Патристика и схоластика как этап в средневековой философии Основной задачей теологии является толкование Священного писания, доказательство существования Бога и формулировка догматов Церкви...

Основные симптомы при заболеваниях органов кровообращения При болезнях органов кровообращения больные могут предъявлять различные жалобы: боли в области сердца и за грудиной, одышка, сердцебиение, перебои в сердце, удушье, отеки, цианоз головная боль, увеличение печени, слабость...

Факторы, влияющие на степень электролитической диссоциации Степень диссоциации зависит от природы электролита и растворителя, концентрации раствора, температуры, присутствия одноименного иона и других факторов...

Йодометрия. Характеристика метода Метод йодометрии основан на ОВ-реакциях, связанных с превращением I2 в ионы I- и обратно...

Броматометрия и бромометрия Броматометрический метод основан на окислении вос­становителей броматом калия в кислой среде...

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