Visual C++. Бази даних \Укр.\

В ході написання даної курсової роботи були створені такі програмні продукти: Консольне застосування - ODBC_Excel програма ODBC, що може бути

Visual C++. Бази даних \Укр.\

Курсовой проект

Разное

Другие курсовые по предмету

Разное

Сдать работу со 100% гаранией
me), &sdwNLen))

SQLTRY(«SQLBindCol», SQLBindCol(hStmt, 2, SQL_C_CHAR, (PTR)szFaculty, sizeof(szFaculty), &sdwFLen))

SQLTRY(«SQLBindCol», SQLBindCol(hStmt, 3, SQL_C_SLONG, (PTR)&nRating, sizeof(nRating), &sdwRLen))

SQLTRY(«SQLExecute», SQLExecute(hStmt))

 

for (i = 1; (rc = SQLFetch(hStmt)) == SQL_SUCCESS; i++)

{

printf(«Record #%d\tName: %s\tFaculty: %s\tRating: %d\n», i, szName, szFaculty, nRating);

}

if (rc != SQL_NO_DATA_FOUND)

{

SQLTRY(«SQLFetch», rc)

}

printf(«Successfully completed.\n»);

Terminate:

if (hStmt) SQLFreeStmt(hStmt, SQL_CLOSE);

if (hDBC) SQLDisconnect(hDBC);

if (hDBC) SQLFreeConnect(hDBC);

if (hEnv) SQLFreeEnv(hEnv);

}

 

Простий макрос SQLTRY використовується для повідомлення про помилки.

Після обовязкових звертань до функцій SQLAllocEnv та SQLAllocConnect програма викликає SQLDriveConnect. Цей виклик робить можливим відкриття таблиці, яка не встановлювалась з використанням програми початкової установки ODBC і робить це без відображення інтерфейса користувача. Для відкриття таблиці використовуються константи CONNSTR та CONNLEN. Як тільки підключення до бази даних успішно завершено, виконуються послідовно два оператори SQL:

  1. SELECT * FROM [Sheet$] - Вибрати всі записи з таблиці Student.
  2. SELECT * FROM [Sheet$] WHERE Rating>91 ORDER BY Rating DESC Вибрати записи з таблиці Student про тих студентів, що мають рейтинг більший за 91, та впорядкувати виведений список за зменшенням рейтингів студентів.

Імя Sheet$ - це імя, яке надається драйвером для першої таблиці в робочій книзі Excel. Оператор SQL використовується для отримання полів всіх записів.

Наступні 4 звертання привязують змінні до стовпчиків таблиці. Таке призначення функції SQLBindCol. Після послідовного отримання записів, значення полів переміщуються в ці змінні.

Самі записи отримуються за допомогою функції SQLFetch і відображаються з використанням printf. Функція SQLFetch викликається до тих пір, поки значення, що повертається нею, не відрізняється чим-небудь від SQL_SUCCESS. Значення, що повертається, SQL_NO_DATA_FOUND показує, що отриманий останній запис, все інше є помилкою і обробляється відповідним чином.

Програма завершується обовязковими звертаннями до функцій SQLFreeStmt, SQLDisconnect, SQLFreeConnect та SQLFreeEnv для звільнення ресурсів і закінчення звязку з джерелом даних.

При запуску цієї програми забезпечується такий вивід:

 

 

Стандарт SQL та ODBC.

Синтаксис для ODBC заснований на стандарті ANSI SQL-92.

Майже кожна СУБД використовує свій власний діалект SQL, синтаксис якого може трохи відрізнятися. Кожен діалект може підтримувати різний набір властивостей. Драйвер ODBC для конкретної бази даних забезпечить необхідний переклад загального SQL на специфічний діалект, що використовується в певній СУБД.

Існує три основні групи операторів SQL:

  1. мова визначеня даних DDL (Data Definition Language) використовується для задання структури бази даних і створення її обєктів;
  2. мова керування даними DCL (Data Control Language) для роботи з правами користувача на конкретні обєкти;
  3. мова маніпулювання даними DML (Data Manipulation Language) для виконання інших операцій таких, як додавання і модифікація даних, а також виконання запитів.

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

 

В DDL для роботи з обєктами використовуються такі оператори SQL:

  1. CREATE створює новий обєкт;
  2. ALTER модифікує існуючий обєкт;
  3. DROP- видаляє обєкт.

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

В таблицях основних обєктах реляційних базах даних можуть міститися дані різних типів. Типи даних SQL, згруповані згідно рівням підлеглості ODBC SQL.

Мінімальний рівень:

  1. CHAR (n) символьний рядок з n символів фіксованої довжини.
  2. VARCHAR (n) символьний рядок змінної довжини, але не більше n символів.
  3. LONG VARCHAR символьний рядок змінної необмеженої довжини.

Базовий рівень:

  1. DECIMAL (p,s) або NUMERIC (p,s) значення з плавучою комою.
  2. SMALLINT- двохбайтове ціле.
  3. INTEGER чотрьохбайтове ціле.
  4. REAL чотирьохбайтове значення з плавучою комою.
  5. FLOAT або DOUBLE PRECISION восьмибайтове значення з плавучою комою.

Розширений рівень:

  1. BIT один біт.
  2. TINYINT однобайтове ціле.
  3. BIGINT восьмибайтове ціле.
  4. BINARY (n) двійкове поле фіксованої довжини, що складається з n байт.
  5. VARBINARY (n) двійкове поле змінної довжини, що не перевищує n байт.
  6. LONG VARBINARY- двійкове поле змінної необмеженої довжини.
  7. DATE- значення дати.
  8. TIME значення часу.
  9. TIMESTAMP значення, що містить час і дату.

Створення таблиці.

CREATE TABLE Student (

StudIDUNTEGER,

StudNameVARCHAR (20) )

Стовпчики таблиці можна довизначити, якщо додати після типу даних додаткові модифікатори. Найчастіше використовується модифікатор NOT NULL, який вказує на те, що значення для цього стовпця повинно бути задано. Можна також вимагати, щоб конкретне поле в таблиці не повторювалось. Для цього використовується модифікатор UNIQUE. Можна також задати для стовпця значення, що буде використовуватися по замовченню, якщо не було задано явних значень. Для цього служить модифікатор DEFAULT.

Видалення таблиці.

DROP TABLE Student

В опрераторі видалення можуть використовуватися ключові слова CASCADE та RESTRICT. Якщо в операторі вказано ключове слово CASCADE, то при видаленні таблиці видаляються також всі представлення або обмежувачі цілостності, повязані з цією таблицею. Модифікатор RESTRICT не дозволить видалити таблицю, якщо на неї є посилання в яких-небудь представленнях або обмежувачах цілостності.

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

Додавання стовпців:

ALTER TABLE Student ADD COLUMN Course INTEGER

Видалення стовпців:

ALTER TABLE Student DROP COLUMN Course

Як і при видаленні таблиці, тут можна використовувати ключові слова CASCADE та RESTRICT. При включенні модифікатору CASCADE видаляються також всі представлення і обмежувачі, які посилаються на видаляємий стовпець. Використання модифікатора RESTRICT запобігає видаленню стовпця, якщо на нього є посилання в представленнях або обмежувачах цілостності посилань.

Індекси.

Це обєкти баз даних, що забезпечують більш ефективний доступ до рядків таблиці. Індекс продивляється рядки таблиці на основі значень певного стовпця або декількох стовпців. Індекси можуть значно підвищити продуктивність бази даних при виконанні певних типів операцій пошуку, проте для їх підтримання треба великий обсяг динамічної памяті. Якщо для одної таблиці створити багато різних індексів, продуктивність всього застосування значно зменшиться.

CREATE [UNIQUE] INDEX StudIndex ON Student (StudID) [ASC, DESC]

ASC в зростаючому порядку

DESC в спадаючому порядку

Змінити індекс неможливо, а можна лише видалити його.

DROP INDEX StudIndex

Представлення.

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

CREATE VIEW MyView AS SELECT * FROM TABLE MyTable

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

CREATE VIEW MyView (Id, Name) AS SELECT (StudID, Studname) FROM Student

Існуюче представленя не можна модифікувати, але можна його видалити.

DROP VIEW MyView

Мова керування даними DCL.

Дозволяє працювати з правами користувачів на обєкти в базі даних.

Мова SQL дозволяє присвоїти групі користувачів певні права на деякий обєкт. Права можуть бути такими:

  1. SELECT дозволяє запитува

Похожие работы

<< < 1 2 3 4 5 6 7 > >>