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



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

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

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

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Влияние первой русской революции 1905-1907 гг. на Казахстан. Революция в России (1905-1907 гг.), дала первый толчок политическому пробуждению трудящихся Казахстана, развитию национально-освободительного рабочего движения против гнета. В Казахстане, находившемся далеко от политических центров Российской империи...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

КОНСТРУКЦИЯ КОЛЕСНОЙ ПАРЫ ВАГОНА Тип колёсной пары определяется типом оси и диаметром колес. Согласно ГОСТ 4835-2006* устанавливаются типы колесных пар для грузовых вагонов с осями РУ1Ш и РВ2Ш и колесами диаметром по кругу катания 957 мм. Номинальный диаметр колеса – 950 мм...

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

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

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

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