Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование приложений баз данных с использованием СУБД MS SQL Server. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
7.3.2. Изменение данных в таблице при помощи объектов Connection и Recordset
В качестве примера рассмотрим программное изменение за­писи таблицы SQL Server. Пусть в таблице Book необходимо уве­личить на единицу значение столбца Kol в записи с первичным ключом ISBN, равным 100036. На языке VBA программа будет вы­глядеть следующим образом.
Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset cn.ConnectionString = _ "Provider=SQLOLEDB.1;UID=user1;pwd=123456; DataBase=BookLibrary;Server=(local)" cn.Open rs.Open "select * from book where ISBN=100036", cn, adOpenKeyset, adLockPessimistic If Not rs.EOF Then rs.Fields("Kol") = rs.Fields("Kol") + 1 rs.Update End If rs.Close: cn.Close Set rs = Nothing: Set cn = Nothing
Здесь в строке подключения указан OLE DB провайдер SQL Server (SQLOLEDB.1), база данных на сервере, в которой находит-
изменяемая таблица (BookLibrary), место расположения SQL
ся Server (local, т. е. тот же компьютер, на котором выполняется дан­ная программа), а также имя входа и пароль, так как для подключе­ния к серверу используется аутентификация SQL Server.
После задания строки подключения открывается соединение, затем выполняется метод Open объекта Recordset, где в качестве источника указан оператор Select, выбирающий запись в таблице с заданным значением столбца ISBN. Если после открытия объект Recordset не пуст, а содержит одну запись, то производится увели­чение столбца Kol на единицу и это изменение фиксируется в таблице.
То же самое изменение можно произвести и без привлечения объекта Recordset, а с помощью метода Execute объекта Connection. Метод Execute непосредственно позволяет выполнять на сервере операторы SQL. Ниже
приведен этот вариант программы.
70
Dim cn As New ADODB.Connection cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI; Data­Base=BookLibrary;Server=(local)" cn.Execute "update book set kol=kol+1 where ISBN=100036" cn.Close Setcn = Nothing
Здесь строка подключения задана как параметр метода Open объекта Connection. Для подключения использована аутентифика­ция Windows, поскольку в строке подключения значение атрибута «Integrated Sequrity» задано равным «SSPI».
7.3.3. Выполнение хранимой процедуры с помощью объекта Command
Ранее, в параграфе 4.1, было описано создание двух хранимых процедур в базе данных BookLibrary. Покажем, как реализовать выполнение этих процедур
в клиентском приложении, написанном
на языке VBA.
Первая процедура GetIzd имела один параметр и возвращала список книг заданного в параметре издательства. В приведенном ниже фрагменте программы в отладочное окно Immediate выводит­ся список издательства «Экономика».
Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim rs As ADODB.Recordset Dim prm As ADODB.Parameter cn.Open "Provider=SQLOLEDB.1;Integrated Secu­rity=SSPI;DataBase=BookLibrary;Server=(local)" cmd.ActiveConnection = cn cmd.CommandType = adCmdStoredProc cmd.CommandText = "GetIzd" Set prm = cmd.CreateParameter("Izd", adVarWChar, adParamInput, 100, "Экономика") cmd.Parameters.Appendprm Set rs = cmd.Execute Do Until rs.EOF Debug.Print rs.Fields("Name")
71
rs.MoveNext Loop rs.Close cn.Close Set rs = Nothing Set cn = Nothing Set cmd = Nothing
В программе вначале создается соединение к SQL Server и это соединение становится значением свойства ActiveConnection объ­екта cmd, имеющим тип Command. Свойству CommandType объек­та cmd присваивается значение AdCmdStoredProc. Это означает, что при выполнении объекта будет осуществлен вызов хранимой про­цедуры. AdCmdStoredProc – это именованная константа, равная че­тырем. Имя хранимой процедуры указывается в свойстве Com­mandText. Затем
создается объект prm типа Parameter и ссылка на него добавляется в семейство параметров объекта cmd. В методе CreateParameter, создающем объект cmd, необходимо указать имя параметра, его тип, входной это параметр или выходной, число байт, достаточное для размещения параметра в памяти, и значение параметра при вызове хранимой процедуры. Поскольку в свое вре­мя, при создании процедуры GetIzd
на сервере, параметру @Izd был присвоен тип nvarchar (50), в методе CreateParameter тип пара­метра был задан равным adVarWChar, а число байт, достаточное для размещения в памяти значения – 100, так как строка хранится в кодировке UNICODE и каждый символ занимает два байта памя­ти. AdVarWChar – это также именованная константа, равная 202. Вызов процедуры осуществляется методом Execute, создающим одновременно объект Recordset с именем
rs. Объект rs содержит за-
писи таблицы Book, возвращенные по запросу.
Во втором примере выполняется процедура SetBookBack.
Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim prm As ADODB.Parameter cn.Open "Provider=SQLOLEDB.1;Integrated Secu­rity=SSPI;DataBase=BookLibrary;Server=(local)" cmd.ActiveConnection = cn cmd.CommandType = adCmdStoredProc
72
cmd.CommandText = "SetBookBack" Set prm = cmd.CreateParameter("id", adInteger, adParamInput, 4,
1000202) cmd.Parameters.Appendprm Set prm = cmd.CreateParameter("dt1", adDate, adParamInput, 8, "2015-01-22") cmd.Parameters.Appendprm Set prm = cmd.CreateParameter("N", adInteger, adParamInput, 4,
100001) cmd.Parameters.Appendprm cmd.Execute lng1 If lng1 = 1 Then MsgBox "Изменение произведено успешно" Set cmd = Nothing Set cn = Nothing
Метод Execute может иметь параметр RecordAffected, возвра­щающий количество обработанных запросом записей. В данном случае этот параметр используется, и количество обработанных в результате выполнения хранимой процедуры записей помещается в переменную lng1. Если это количество после выполнения метода Execute равно нулю, то ни одной
записи обработано не было, т. е.
выполнение хранимой процедуры закончилось неудачно.
73
Список литературы
.
.........
.....
.
...
...
...
.
.
...
...
1. Мамаев Е. Microsoft SQL Server 2000 / Е. Мамаев. – СПб. :
БХВ-Петербург, 2001. – 1280 с.
2. Литвин П. Разработка корпоративных приложений в MS Access /
П. Литвин, К. Гетц, М. Гунделой; пер. с англ. – СПб.: Питер; Киев: BHV,
2003. – 848 c.
3. Тернстрем Т. Microsoft SQL Server 2008. Разработка баз данных.
Учебный курс Microsoft / Т. Тернстрем, Э. Вебер, М. Хотек совместно с ком­панией Grand Masters; пер. с англ. – М.: Русская редакция, 2011. – 496 с.
4. Станек Уильям Р. Microsoft SQL Server 2008. Справочник админи-
стратора / Станек Уильям Р.; пер. с англ. – М.: Русская редакция, 2012. – 720 с.
74
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Оглавление
Введение ........................................................................................................
1. Основные компоненты СУБД ..............................................................
1.1. Службы MS SQLServer.......................................................................
1.2. Системные базы данных.....................................................................
1.3. Средства администрирования............................................................
1.3.1. SQL Server Configuration Manager ..........................................
1.3.2. SQL Server Management Studio................................................
1.3.3. Мастер импорта и экспорта данных.......................................
2. База данных и ее объекты ....................................................................
2.1. Физическая структура базы данных..................................................
2.2. Таблицы и типы данных.....................................................................
2.3. Создание таблицы..............................................................................
2.4. Представления (Views) .......................................................................
2.5. Индексы................................................................................................
3. Язык Transact-SQL .................................................................................
3.1. Общие сведения о Transact-SQL........................................................
3.2. Типы данных........................................................................................
3.3. Переменные в Transact-SQL...............................................................
3.4. Операторы языкаTransact-SQL ..........................................................
3.4.1. Оператор присваивания ...........................................................
3.4.2. Оператор вывода ......................................................................
3.4.3. Составной оператор .................................................................
3.4.4. Условный оператор IF .............................................................
3.4.5. Функция CASE .........................................................................
3.4.6. Оператор цикла.........................................................................
3.4.7. Оператор WAITFOR ................................................................
3.4.8. Блок TRY/CATCH ....................................................................
3.4.9. Комментарии.............................................................................
3.4.10. Функции Transact-SQL...........................................................
3.4.11. Отладка кода в Management Studio.......................................
4. Поддержка транзакций ..........................................................................
4.1. Определение ........................................................................................
4.2. Блокировки ..........................................................................................
4.3. Использование транзакций ................................................................
5. Программируемые объекты базы данных .........................................
5.1. Хранимые процедуры .........................................................................
5.2. Пользовательские функции................................................................
5.3. Триггеры...............................................................................................
6. Обеспечение доступа к данным ...........................................................
6.1. Проверка подлинности пользователя ...............................................
6.2. Специальные учетные записи............................................................
3 4 4 5 6 6 7 11 13 13 15 18 19 21 22 22 22 23 24 24 25 26 26 26 28 29 29 30 30 33 34 34 34 36 39 39 43 47 50 50 53
75
6.3. Фиксированные роли сервера ............................................................
.
.
.
.
.
.
.
.
.
6.4. Доступ к объектам базы данных........................................................
6.5. Пользовательские и фиксированные роли базы данных ................
6.6. Установка разрешений доступа для объектов, ролей
и пользователей ..........................................................................................
7. Программный доступ к данным SQL Server .....................................
7.1. Использование ODBC в MS Access для получения связанных
таблиц базы данных SQL Server ...............................................................
7.2. Стандарт OLE DB................................................................................
7.3. Использование объектной модели ADO (ActiveX Data Objects)....
7.3.1. Структура ADO ......................................................................
7.3.2. Изменение данных в таблице при помощи объектов
Connection и Recordset........................................................................
7.3.3. Выполнение хранимой процедуры с помощью
объекта Command ............................................................................
Список литературы..........................................................................................
76
53 55 56
57 61
61 67 68 68
70
71 74
Учебное издание
Шацков Владимир Валентинович
ПРОГРАММИРОВАНИЕ ПРИЛОЖЕНИЙ
БАЗ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ
СУБД MS SQLSERVER
Учебное пособие
Редактор А. А. Стешко
Корректор М. А. Молчанова
Компьютерная верстка И. А. Яблоковой
Подписано к печати 28.12.15. Формат 6084 1/16. Бум. офсетная.
Санкт-Петербургский государственный архитектурно-строительный университет.
Отпечатано на ризографе. 190005, Санкт-Петербург, ул. Егорова, д. 5/8, лит. А.
Усл. печ. л. 4,7. Тираж 100 экз. Заказ 173. «С» 91.
190005, Санкт-Петербург, 2-я Красноармейская ул., д. 4.
77
ДЛЯ ЗАПИСЕЙ
78
ДЛЯ ЗАПИСЕЙ
79
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]