Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование приложений баз данных с использованием СУБД MS SQL Server. Учебное пособие
.pdf
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; DataBase=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 Security=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 – это именованная константа, равная четырем. Имя хранимой процедуры указывается в свойстве CommandText. Затем
создается объект 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 Security=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. Формат 6084 1/16. Бум. офсетная.
Санкт-Петербургский государственный архитектурно-строительный университет.
Отпечатано на ризографе. 190005, Санкт-Петербург, ул. Егорова, д. 5/8, лит. А.
Усл. печ. л. 4,7. Тираж 100 экз. Заказ 173. «С» 91.
190005, Санкт-Петербург, 2-я Красноармейская ул., д. 4.
77

ДЛЯ ЗАПИСЕЙ
78

ДЛЯ ЗАПИСЕЙ
79
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
