Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Visual2.doc
Скачиваний:
9
Добавлен:
07.03.2016
Размер:
3.31 Mб
Скачать

10.6. Об'єкт Error і колекція Errors

Об'єкт ADO Connection містить колекцію Errors, що включає об'єкти Error з конкретною інформацією про помилки, які можуть відбуватися під час з'єднання в рамках однієї операції. У більшості випадків об'єкти Error генеруються тільки при поверненні помилки системою бази даних, а не при помилках ADO під час виконання процедур.

УВАГА !!! Багато помилок ADO не потрапляють до колекції Errors, тому рекомендується використовувати універсальну технологію обробки винятків try catch() з використанням класу _com_error. Дана технологія розглянута у розділі 10.2 при роботі з об'єктом Connection.

10.7. Використання інтерфейсів C++ ADO

Інтерфейси ADO є набором СОМ-компонентів. Отже, в Visual C++ їх можна використовувати кількома способами. У якості одного із способів можна використовувати інтерфейси ADO за допомогою інтерфейсів C++, що поставляються Microsoft у складі Visual C++. Для використання інтерфейсів ADO в C++ необхідно, щоб в додатку були присутні такі рядки включення:

#include <adoid.h> // ідентифікатори класів та інтерфейсів

#include <adoint.h> // інтерфейс ADO

#include <icrsint.h> // розширення прив'язки даних для ADO 2.0

У файлах оголошені ідентифікатори класів та інтерфейсів ADO, а також сам інтерфейс і розширення для прив'язки даних.

Ця технологія не наводиться у посібнику, тому що за основу взято більш універсальна технологія роботи з інтерфейсами ADO, заснована на використанні імпорту, яка значно спрощує використання об'єктів з бібліотеки типів COM в додатках C++.

10.8. Коротка характеристика структури мови sql

Мова SQL. Формування запитів до бази даних

SQL (Structured Query Language - Структурована Мова Запитів) - стандартна мова запитів по роботі з реляційними БД. Мова SQL з'явивлася після реляційної алгебри, і її прототип був розроблений в кінці 70-х років компанією IBM. Він реалізований у першому прототипі реляційної СУБД фірми IBM System R. Надалі ця мова застосовувалася у багатьох комерційних СУБД і в силу свого широкого розповсюдження стала стандартом для мов маніпулювання даними в реляційних СУБД.

Перший міжнародний стандарт мови SQL був прийнятий в 1989 р. (його називають SQL/89 або SQL1). Іноді його також називають стандартом ANSI / ISO і переважна більшість СУБД підтримують цей стандарт повністю.

В кінці 1992 р. був прийнятий новий міжнародний стандарт мови SQL, який називають SQL/92 або SQL2. Більшість виробників СУБД внесли зміни у свої продукти, щоб вони відповідали цьому стандарту.

У 1999 р. з'явився новий стандарт, названий SQL3.

Для постачальників СУБД стандарт - це мета, яка гарантує правильний напрямок робіт.

SQL не можна віднести до традиційних мов програмування: вона не містить традиційних операторів, керуючих ходом виконання програми, операторів опису типів і ін. Вона містить лише набір стандартних операторів доступу до даних, що зберігаються в БД. Оператори мови SQL вбудовуються в базову мову програмування, наприклад, C++, Visual Basic, Visual FoxPro і т.д. Крім того, оператори SQL можуть виконуватися безпосередньо в інтерактивному режимі.

Типи даних

У мові SQL/89 підтримуються наступні типи даних:

CHARACTER(n) або CHAR(n) - символьні рядки постійної довжини в n символів. Під кожне значення завжди відводиться n символів. Якщо реальне значення менше, відсутні символи автоматично доповнюються пробілами.

NUMERIC[(n, m)] точні числа, де n - загальна кількість цифр у числі, m - кількість цифр ліворуч від десяткової точки.

DECIMAL[(n, m)] або DEC [(n, m)] – те ж, що і NUMERIC[(n, m)].

INTEGER або INT – цілі числа 4 байта.

SMALLINT – цілі числа 2 байта.

FLOAT[(n)] – числа з плаваючою точкою n байт.

REAL і DOUBLE PRECISION – числа з плаваючою точкою.

У стандарті SQL/92 додані наступні типи даних:

VARCHAR - рядки символів змінної довжини.

NCHAR(n) - рядки локалізованих (Unicode) символів постійної довжини.

NVARCHAR - рядки локалізованих (Unicode) символів змінної довжини.

BIT(n) - рядок бітів постійної довжини.

BIT VARING - рядок бітів змінної довжини.

DATE - календарна дата.

TIMESTAMP(n) - дата та час, де n - точність.

Більшість комерційних СУБД підтримують додаткові типи даних, які не визначені в стандарті. Специфіка реалізації окремих типів даних серйозним чином впливає на результати запитів до БД. Тому, при перенесенні додатків з однієї СУБД на іншу, потрібно бути дуже уважним. На різних платформах вони можуть працювати по-різному, одна з причин - розбіжність у реалізації типів даних.

Структура SQL

SQL є повною мовою, в ній присутні не тільки операції запитів, але й оператори, відповідні мови опису даних. Крім того, мова містить оператори, призначені для управління (адміністрування) БД.

SQL містить наступні розділи (табл. 10.10):

Таблиця 10.10

Розділи мови SQL

Оператор

Зміст

Дія

Оператори визначення даних DDL (Data Definition Language)

CREATE TABLE

Створити таблицю

Створює нову таблицю в БД

DROP TABLE

Видалити таблицю

Видаляє таблицю з БД

ALTER TABLE

Змінити таблицю

Змінює структуру існуючої таблиці або обмеження цілісності, задані для цієї таблиці

CREATE VIEW

Створити вид

Створює віртуальну таблицю (динамічний набір даних), відповідну деякому SQL-запиту

ALTER VIEW

Змінити вид

Змінює раніше створену віртуальну таблицю

DROP VIEW

Видалити вид

Видаляє раніше створену віртуальну таблицю

CREATE INDEX

Створити індекс

Створює індекс для деякої таблиці для забезпечення швидкого доступу до атрибутів, що входять в індекс

DROP INDEX

Видалити індекс

Видаляє раніше створений індекс

Мова запитів DQL (Data Query Language)

SELECT

Вибрати рядки

Оператор, який замінює всі оператори реляційної алгебри і дозволяє сформувати результуюче відношення, відповідає запиту

Оператори маніпулювання даними DML (Data Manipulation Language)

DELETE

Видалити рядки

Видаляє один або кілька рядків, відповідно умовам фільтрації, з базової таблиці. Застосування оператора узгоджується з принципами підтримки цілісності, тому цей оператор не завжди може бути виконаний коректно, навіть якщо синтаксично він записаний правильно

INSERT

Вставити рядок

Вставляє один рядок в базову таблицю. Допустимі модифікації оператора, при яких відразу кілька рядків можуть бути перенесені з однієї таблиці або запиту в базову таблицю

Продовження таблиці 10.10

Оператор

Зміст

Дія

UPDATE

Оновити рядок

Оновлює значення одного або кількох полів (стовпців) в одному або декількох рядках, що задовольняють умові фільтрації

Засоби управління транзакціями

COMMIT

Завершити транзакцію

Завершує взаємозв'язану комплексну обробку інформації, об'єднану в транзакцію

ROLLBACK

Відкат транзакції

Скасувати зміни, зроблені в ході виконання транзакції

SAVEPOINT

Зберегти проміжну точку виконання транзакції

Зберегти проміжний стан БД, позначити його для того, щоб можна було в подальшому до нього повернутися

Засоби адміністрування даних

ALTER DATABASE

Змінити БД

Змінити набір основних об'єктів в базі даних, обмежень, що стосуються всієї бази даних

ALTER PASSWORD

Змінити пароль

Змінити пароль всієї бази даних

CREATE DATABASE

Створити БД

Створити нову базу даних, визначив основні параметри для неї

DROP DATABASE

Видалити БД

Видалити існуючу базу данних (якщо Ви маєте на це право)

GRANT

Надати права

Надати права доступу на ряд дій над деяким об'єктом БД

REVOKE

Позбавити прав

Позбавити права доступу до деякого об'єкту БД або деяких дій над об'єктом

Програмний SQL

DECLARE

Визначає курсор для запиту

Визначає деяке ім'я і визначає пов'язаний з ним запит до БД, який відповідає віртуальному набору даних

OPEN

Відкрити курсор

Формує віртуальний набір данних, відповідає опису зазначеного курсору і поточному стану БД

FETCH

Зчитати рядок з безлічі рядків, визначених набором

Зчитує черговий рядок, заданий параметром команди, з віртуального набору даних, який відповідає відкритому курсору

CLOSE

Закрити курсор

Припиняє доступ до віртуального набору даних, що відповідає зазначеному курсору

PREPARE

Підготувати оператор SQL до динамічного виконання

Згенерувати план виконання запиту, відповідного заданому оператору SQL

EXECUTE

Виконати оператор SQL, раніше підготовлений до виконання

Виконує раніше підготовлений план запитів

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]