THE BELL

Є ті, хто прочитали цю новину раніше вас.
Підпишіться, щоб отримувати статті свіжими.
Email
ім'я
Прізвище
Як ви хочете читати The Bell
без спаму

У вікні Server Explorer, де представлені таблиці бази даних на Microsoft SQL Server у вигляді дерева (див. Рис. 4.1.), Для кожної таблиці можна відкрити вікно, натисканням на кнопку Show Table Data. Саме в цьому вікні надається можливість редагування даних таблиці. Виглядає це вікно редагування приблизно так, як представлено на рис. 4.2. Приблизно, тому що повний обсяг не увійшов до малюнок на увазі великої кількості колонок.

      1. Реалізація відображення бази даних

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

Тому, за рахунок DataSet на комп'ютері клієнта знаходиться відображення бази, з якої він працює. По завершенні роботи бази клієнта і сервера синхронізуються (вірніше, в серверну базу вносяться зміни, зроблені в базі даних клієнта)

Відображення нашої бази даних на MS Visual Studio 2005 виглядає наступним чином:

Всі числові дані мають тип Int32, строкові - String. Розміри строкових даних відповідають тим, які наведені в фізичної моделі бази даних.

На скрині видно, що в кожній таблиці є ще і TableAdapter'и. Це свого роду мости для з'єднання DataSet і джерелом даних. Тут є такі методи, як Fill і GetData ()

Цей метод призначений для того, щоб заповнювати таблицю потрібними даними з джерела (файл бази даних)

    Метод GetData ()

Призначений для того, щоб брати дані з таблиці відображення.

    1. Реалізація програмного забезпечення

Головною особливістю в реалізації програмного забезпечення є той факт, що всі класи, що відповідають за редагування таблиць бази даних, успадковуються від одного базового класу, що надає зручність в реалізації. Методи цього базового класу були описані вище. Віртуальні методи базового класу необхідно перекрити в класі-нащадку. Всі ці методи дозволяють змінювати у нащадка такі параметри як: назва заголовка форми, заповнення та збереження потрібної таблиці бази даних (один клас-нащадок працює тільки з однією таблицею, в сенсі редагування даних, а проте при відображенні даних користувачеві, можливо використання декількох таблиць бази даних з метою показувати дані у зрозумілій користувачеві формі).

      1. інтерфейс програми

Головне вікно є MDI додаток, яке має таке меню:

Кожна з таблиць для редагування БД викликається відповідним пунктом меню «Таблиці».

Звіт про навантаження на викладачів, також створюється після натискання на відповідний пункт меню «Звіти».

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

анотація: Прочитавши цю лекцію, ви зможете: створювати запити за допомогою Конструктора запитів SQL Server Management Studio, витягувати інформацію про базу даних з системних таблиць бази даних, динамічно створювати прості запити на основі призначеного для користувача введення, форматувати для користувача введення і фільтрувати складні динамічні запити, виконувати синтаксичний аналіз і переформатувати дані для використання в фільтрі, захистити базу даних від атак типу "SQL-injection", використовувати процедуру sp_executeSql щоб попросити

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

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

Інтерфейс користувача для побудови запитів

Середа SQL Server Management Studio включає складний інтерфейс для побудови запитів. Давайте вивчимо цей інтерфейс, щоб у вас сформувалося уявлення про те, як можна створювати запити динамічно. Вашому додатку не знадобляться всі елементи управління, Які надаються серед SQL Server Management Studio. По суті, потрібно ретельно продумати, як найкращим чином обмежити користувачам можливості вибору.

Створюємо запит за допомогою Конструктора запитів SQL Server Management Studio

Витяг інформації про таблиці бази даних

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

застосування INFORMATION_SCHEMA

Схема INFORMATION_SCHEMA - це особлива схема, яка є в кожній базі даних. Вона містить визначення деяких об'єктів бази даних.

INFORMATION_SCHEMA відповідає стандарту ANSI, який призначений для вилучення інформації від будь-якого ANSI-совмести-мого ядра бази даних. У SQL Server INFORMATION_SCHEMA складається з набору уявлень, які запитують таблиці бази даних sys *, що містять інформацію про структуру бази даних. Запит до цих таблиць можна виконати безпосередньо, точно так же, як до будь-яких таблиць бази даних. Однак в більшості випадків для того, щоб отримати інформацію з таблиць * sys, краще використовувати представлення схеми INFORMATION_SCHEMA.

Примітка. Схема INFORMATION_SCHEMA іноді запитує таблиці, які не потрібні, що завдає шкоди продуктивності. У наступному прикладі цієї лекції це не особливо важливо, тому що додаток вже чекало призначеного для користувача введення. Однак це слід враховувати, якщо швидкість є важливим аспектом для вашого застосування.

Ось базовий код T-SQL, який використовується для отримання інформації про шпальтах, що входять в таблицю:

Зверніть увагу на те, що для отримання схеми для таблиці потрібно вибрати поле TABLE_SCHEMA. Це може мати значення для створення аналогічних запитів в подальшому. Щоб експериментувати з методами, описаними в даній лекції, створіть новий проект в Visual Studio.

Створюємо новий проект Visual Studio
  1. Виберіть з меню Start (Пуск) команди All Programs, Microsoft Visual Studiio 2005, Microsoft Visual Studio 2005.
  2. В меню Visual Studio виберіть команди File, New, Project (Файл, Створити, Проект).
  3. В панелі Project Types (Типи проектів) розгорніть вузол Visual Basic (Рішення Visual Basic) і виберіть в панелі Templates (Шаблони) шаблон Application (Додаток). Дайте проекту ім'я Chapter7 і натисніть кнопку ОК,
  4. Додаток для цього прикладу можна знайти в файлах прикладів в папці \\ Chapter7 \\ DynQuery. Ви можете вирізати і вставляти код для наступних процедур з файлу Form1.vb.
Отримання списку таблиць і уявлень

Як правило, вам потрібно буде надати користувачеві можливість вибрати не тільки стовпці, а й таблицю для динамічного запиту, тому доведеться відобразити для користувача список таблиць. Необхідну інформацію можна отримати за допомогою наступного запиту:

SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES

У додатку цей запит можна використовувати наступним чином.

Отримуємо список таблиць

Наведений вище код на Visual Basic инициализирует об'єкт SqlCommand з ім'ям com з рядком SQL, яку потрібно виконати, а потім виконує об'єкт SqlCommand. Це найпростіший спосіб виконати пропозицію T-SQL з програми.

В якості вправи можна розмістити схеми і таблиці, отримані в процесі виконання процедури Load нашої форми, в інтерфейсі програми у вигляді форми, щоб користувач міг вибрати схему і таблицю для роботи. Для прикладу в цій лекції ми припускаємо, що користувач вибрав схему Sales і таблицю Customer.

Після того, як користувач вибрав таблицю, можна витягти список стовпців для цієї таблиці за допомогою того ж методу, використовуючи для користувача введення в якості імені таблиці в запиті. Для цього в рядок запиту слід ввести заступник, а потім замінити цей заступник викликом String.Format. У наведеному нижче коді заступник в рядку запиту - (0).

Отримуємо список стовпців
  1. Додайте наступну процедуру RetrieveColumns в код нижче процедури RetrieveTables:

    Sub RetrieveColumns (ByVal TableName As String) MyConnection As New SqlClient.SqlConnection (_ "Data Source \u003d. \\ SQLExpress;" & _ "Initial Catalog \u003d AdventureWorks; Trusted_Connection \u003d Yes;") Dim sqlStr As String sqlStr \u003d "SELECT TABLE_SCHEMA, TABLE_NAME , COLUMN_NAME, "+ _" ORDINAL_POSITION, DATA_TYPE "+ _" FROM INFORMATION_SCHEMA.COLUMNS "+ _" WHERE (TABLE_NAME \u003d "(0)") "Dim tableColumns As New DataTable Dim da As New SqlClient.SqlDataAdapter (_ String.Format (sqlStr, TableName), MyConnection) da.Fill (tableColumns) For i As Integer \u003d 0 To tableColumns.Rows.Count - 1 With tableColumns.Rows.Item (i) Console.WriteLine ( "(0) (1) (2 ) ", _ .Item (1), .Item (2), .Item (3)) End With Next End Sub

  2. В процедуру Form1_Load додайте наступний виклик процедури RetrieveColumns після процедури RetrieveTables:

Приклад створення локальної бази даних Microsoft SQL Server вMS Visual Studio

У даній темі показано рішення задачі створення бази даних типу SQL Server за допомогою MS Visual Studio. Розглядаються наступні питання:

  • робота з вікном Server Explorer в MS Visual Studio;
  • створення локальної бази даних типу SQL Server Database;
  • створення таблиць в базі даних;
  • редагування структур таблиць;
  • зв'язування таблиць бази даних між собою;
  • внесення даних в таблиці засобами MS Visual Studio.

Умова задачі

Використовуючи засоби MS Visual Studio створити базу даних типу MS SQL Server з ім'ям Education. База даних містить дві таблиці Student і Session. Таблиці між собою пов'язані з некоториму полю.

Структура першої таблиці «Student».

Структура другий таблиці "Session".

виконання

1. Завантажити MS Visual Studio.

2. Активувативікно  Server Explorer.

Для роботи з базами даних корпорація Microsoft пропонує полегшений сервер баз даних Microsoft SQL Server. Існують різні версії Microsoft SQL Server, наприклад: Microsoft SQL Server 2005, Microsoft SQL Server 2008, Microsoft SQL Server 2014 і інші версії.

Завантажити ці версії можна з сайту Microsoft www.msdn.com.

Цей сервер відмінно підходить для роботи з базами даних. Він безкоштовний і має графічний інтерфейс для створення і адміністрування баз даних за допомогою SQL Server Management Tool.

Перш за все, перед створенням бази даних, потрібно активувати утиліту Server Explorer. Для цього, в MS Visual Studio потрібно викликати (рис. 1)

   View -\u003e Server Explorer

Мал. 1. Виклик Server Explorer

Після виклику вікно Server Explorer матиме приблизний вигляд, як показано на малюнку 2.

Мал. 2. Вікно Server Explorer

3. Створення бази даних "Education".

Щоб створити нову базу даних, що базується на постачальника даних Microsoft SQL Server, потрібно клікнути на вузлі Data Connections, а потім вибрати " Create New SQL Server Database ..."(Рис. 3).

Мал. 3. Виклик команди створення бази даних SQL Server

В результаті відкриється вікно « Create New SQL Server Database»(Рис. 4).

У вікні (в поле «Server Name») вказується ім'я локального сервера, встановленого на вашому комп'ютері. У нашому випадку це ім'я "SQLEXPRESS".

В поле «New database name:» вказується ім'я створюваної бази даних. У нашому випадку це ім'я Education.

Опцію Use Windows Autentification потрібно залишити без змін і натиснути кнопку OK.

Мал. 4. Створення нової бази даних SQL Server 2008 Express за допомогою MS Visual Studio 2010

Після виконаних дій, вікно Server Explorer набуде вигляду, як показано на малюнку 5. Як видно з малюнка 5, в список наявних баз даних додана база даних Education з ім'ям

sasha-pc \\ sqlexpress.Education.dbo

Мал. 5. Вікно Server Explorer після додавання бази даних Education

4. Об'єкти бази даних Education.

Якщо розгорнути базу даних Education (знак «+»), то можна побачити список з наступних основних об'єктів:

  • Database Diagrams - діаграми бази даних. Діаграми показують зв'язки між таблицями бази даних, відносини між полями різних таблиць і т.п .;
  • Tables - таблиці, в яких містяться дані бази даних;
  • Views - уявлення. Відмінність між уявленнями і таблицями полягає в тому, що таблиці баз даних містять дані, а представлення даних не містять їх, а вміст вибирається з інших таблиць або уявлень;
  • Stored procedures - збережені процедури. Вони представляють собою групу пов'язаних операторів на мові SQL, що забезпечує додаткову гнучкість при роботі з базою даних.

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

На даний момент база даних Education абсолютно порожня і не містить ніяких об'єктів (таблиць, збережених процедур, уявлень і т.д.).

Щоб створити таблицю, потрібно викликати контекстне меню (клік правою кнопкою мишки) і вибрати команду "Add New Table" (рисунок 6).

Мал. 6. Команда додавання нової таблиці

Існує й інший варіант додавання таблиці бази даних за допомогою команд меню Data:

   Data -\u003e Add New -\u003e Table

Мал. 7. Альтернативний варіант додавання нової таблиці

В результаті відкриється вікно додавання таблиці, яке містить три стовпці (рисунок 8). У першому стовпчику "Column Name" потрібно ввести назву відповідного поля таблиці бази даних. У другому стовпці "Data Type" потрібно ввести тип даних цього поля. У третьому стовпці "Allow Nulls" вказується опція про можливість відсутності даних в поле.

Мал. 8. Вікно створення нової таблиці

За допомогою редактора таблиць потрібно сформувати таблицю Student як зображено на малюнку 9. Ім'я таблиці потрібно задати при її закритті.

У редакторі таблиць можна задавати властивості полів у вікні Column Properties. Для того, щоб задати довжину рядка (nvchar) в символах, в вікні Column Properties є властивість Length. За замовчуванням значення цієї властивості дорівнює 10.

Мал. 9. Таблиця Student

Наступним кроком потрібно задати ключове поле. Це здійснюється викликом команди "Set Primary Key" з контекстного меню поля Num_book. За допомогою ключового поля будуть встановлені зв'язки між таблицями. У нашому випадку ключовим полем є номер залікової книжки.

Мал. 10. Завдання ключового поля

Після установки первинного ключа вікно таблиці буде мати вигляд як зображено на малюнку 11.

Мал. 11. Таблиця Student після остаточного формування

Тепер можна закрити таблицю. У вікні збереження таблиці потрібно задати її ім'я - Student (рис. 12).

Мал. 12. Введення імені таблиці Student

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

За зразком створення таблиці Student створюється таблиця Session.

На малюнку 13 зображено вигляд таблиці Session після остаточного формування. Первинний ключ (Primary Key) встановлюється в поле Num_book. Ім'я таблиці задається Session.

Мал. 13. Таблиця Session

Після виконаних дій, у вікні Server Explorer будуть відображатися дві таблиці Student і Session.

Таким чином, в базу даних можна додавати будь-яку кількість таблиць.

7. Редагування структури таблиць.

Бувають випадки, коли потрібно змінити структуру таблиці бази даних.

Для того, щоб вносити зміни в таблиці бази даних в MS Visual Studio, спочатку потрібно зняти опцію "Prevent Saving changes that require table re-creation"Як показано на малюнку 14. Інакше, MS Visual Studio блокуватиме внесення змін до раніше створену таблицю. Вікно Options, показане на малюнку 14 викликається з меню Tools в такій послідовності:

Tools -\u003e Options -\u003e Database Tools -\u003e Table and Database Designers

Мал. 14. Опція " Prevent Saving changes that require table re-creation

Після настройки можна змінювати структуру таблиці. Для цього використовується команда "Open Table Definition" (рисунок 15) з контекстного меню, що викликається для вибраної таблиці (правий клік мишкою).

Мал. 15. Виклик команди "Open Table Definition"

Також ця команда розміщується в меню Data:

   Data -\u003e Open Table Definition

Попередньо таблицю потрібно виділити.

8. Встановлення зв'язків між таблицями.

У відповідності до розділу завдання, таблиці пов'язані між собою по полю Num_book.

Щоб створити зв'язок між таблицями, спочатку потрібно (рисунок 16):

  • виділити об'єкт Database Diagram;
  • вибрати команду Add New Diagram з контекстного меню (або з меню Data).

Мал. 16. Виклик команди додавання нової діаграми

В результаті відкриється вікно додавання нової діаграми Add Table (рисунок 17). У цьому вікні потрібно вибрати послідовно дві таблиці Session і Student і натиснути кнопку Add.

Мал. 17. Вікно додавання таблиць до діаграми

Мал. 18. Таблиці Student і Session після додавання їх до діаграми

Щоб почати встановлювати відношення між таблицями, треба зробити клік на поле Num_book таблиці Student, а потім (не відпускаючи кнопку мишки) перетягнути його на поле Num_book таблиці Session.

В результаті послідовно відкриються два вікна: Tables and Columns (рис. 19) і Foreign Key Relationship (рис. 20), в яких потрібно залишити все як є і підтвердити свій вибір на OK.

У вікні Tables and Columns задається назва відносини (FK_Session_Student) і назви батьківської (Student) та дочірньої таблиць.

Мал. 19. Вікно Tables and Columns

Мал. 20. Вікно налаштування властивостей відносини

Після виконаних дій буде встановлено відношення між таблицями (рисунок 21).

Мал. 21. Відношення між таблицями Student і Session

Збереження діаграми здійснюється точно також як і збереження таблиці. Ім'я діаграми потрібно вибрати на свій розсуд (наприклад Diagram1).

Після завдання імені діаграми відкриється вікно Save, в якому потрібно підтвердити свій вибір (рисунок 22).

Мал. 22. Підтвердження збереження змін в таблицях

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

Система Microsoft Visual Studio дозволяє безпосередньо вносити дані в таблиці бази даних.

У нашому випадку, при встановленні зв'язку (рис. 19) первинної (Primary Key Table) обрано таблиця Student. Тому, спочатку потрібно вносити дані в осередку саме цієї таблиці. Якщо спробувати спочатку внести дані в таблицю Session, то система заблокує такий введення з висновком відповідного повідомлення.

Щоб викликати режим введення даних в таблицю Student, потрібно викликати команду Show Table Data з контекстного меню (клік правою кнопкою мишки) або з меню Data (рис. 23).

Мал. 23. Команда Show Table Data

Відкриється вікно, в якому потрібно ввести вхідні дані (рис. 24).

Мал. 24. Введення даних в таблиці Student

Після внесення даних в таблицю Student потрібно внести дані в таблицю Session.

При внесенні даних у поле Num_book таблиці Session потрібно вводити точно такі ж значення, які введені в поле Num_book таблиці Student (оскільки ці поля пов'язані між собою).

Наприклад, якщо в поле Num_book таблиці Student введені значення “101”, “102”, “103”   (Див. Рис. 24), то слід вводити саме ці значення в поле Num_book таблиці Session. Якщо спробувати ввести інше значення, система видасть приблизно наступне вікно (рис. 25).

Мал. 25. Повідомлення про помилку введення даних пов'язаних таблиць Student і Session

Таблиця Session з введеними даними зображена на малюнку 26.

У цій статті ви дізнаєтеся що таке LINQ і як за допомогою нього робити запити до списків.

Що таке LINQ? Language Integrated Query (LINQ) - мова інтегрованих запитів, а точніше неоднозначний проект Microsoft по додаванню синтаксису мови запитів схожий на SQL. Специфічне визначення, за допомогою цього інструменту можна відносно просто створювати запити до таблиць і списків даних, не обов'язково до бази даних.

У прикладах від Microsoft не береться одна маленька, але важлива деталь. Для роботи з набором даних нам потрібно використовувати структуру DataContext, визначення якої можна отримати за допомогою SPMetal.exe для списку або бібліотеки присутньої на сервері Sharepoint. Іншими словами нам спочатку необхідно визначити цей тип даних, а потім вже створювати запит Взагалі рекомендую скористатися необхідні інструменти для роботи в MVS: Imtech Get SPMetal Definition Extension.

Для роботи нам знадобиться який-небудь список. Скористаємося простим списком - "настроюється список"; назва - "Просте звернення"; поля за замовчуванням: Номер, Назва.

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

Далі створимо файл клас "ПростоеОбращеніе.cs" за допомогою SPMetal.exe або плагіна для студії. Додамо посилання на бібліотеку Microsoft.Sharepoint.Linq. Більш детальну інформацію можна отримати на сайті MSDN.

Створимо функцію Render і my_mess. В останній функції будемо формувати дані для відображення.

// перенавантажуємо функцію
protected override void Render (HtmlTextWriter writer)
{
base .Render (writer);
  my_mess (writer);
}

// Наша функція для роботи зі списком
public void my_mess (HtmlTextWriter writer)
{
// Створимо контекст
  DataContext data \u003d new DataContext ( "http: // localhost");
// Зв'яжемо його з відповідним списку на сайті в корені
  EntityList<Элемент>  Simple_Message \u003d data.GetList<Элемент>("Просте звернення");
// Виконаємо запит - виберемо всі рядки зі списку "Просте звернення"
var query \u003d from mess in Simple_Message
select mess;
// відобразимо всі дані з результату запиту
foreach (var elem in query)
{
  writer.WriteLine ( "Приклад:"  + Elem.Названіе.ToString ());
  writer.WriteBreak ();
}

}

Компілюємо проект і додаємо на сторінку. В результаті відобразяться всі рядки знаходяться в списку.

Продовження пізніше (стаття не закінчена) ...

THE BELL

Є ті, хто прочитали цю новину раніше вас.
Підпишіться, щоб отримувати статті свіжими.
Email
ім'я
Прізвище
Як ви хочете читати The Bell
без спаму