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

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

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



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...

Толкование Конституции Российской Федерации: виды, способы, юридическое значение Толкование права – это специальный вид юридической деятельности по раскрытию смыслового содержания правовых норм, необходимый в процессе как законотворчества, так и реализации права...

Значення творчості Г.Сковороди для розвитку української культури Важливий внесок в історію всієї духовної культури українського народу та її барокової літературно-філософської традиції зробив, зокрема, Григорій Савич Сковорода (1722—1794 pp...

Алгоритм выполнения манипуляции Приемы наружного акушерского исследования. Приемы Леопольда – Левицкого. Цель...

ИГРЫ НА ТАКТИЛЬНОЕ ВЗАИМОДЕЙСТВИЕ Методические рекомендации по проведению игр на тактильное взаимодействие...

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

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