ВУЗ: Не указан

Категория: Методичка

Дисциплина: Базы данных

Добавлен: 09.02.2019

Просмотров: 1233

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

1) Создание базы данных для сервера MS SQL Server с помощью утилиты Server Explorer. Структура базы данных MS SQL Server. Создание таблиц базы данных.

Для работы с базами данных среда Visual Studio имеет утилиту Обозреватель серверов, которая запускается с помощью команды Вид/Обозреватель серверов.

Рис. 1.2. Фрагмент окна Server Explorer


Как видно, в этом окне указывается все базы данных, которые соединены на ваш компьютер (на моем компьютере базы данных MyBase, Computer и AccessDB).


Для создания новой базы данных из контекстного меню узла Подключения данных выберите команду Создать новую базу данных SQL Server. При этом появляется окно создания новой базы данных.


Как видно, в этом окне в поле Имя сервера следует ввести имя локального SQL-сервера, а в поле Имя новой базы данных - имя базы данных, например, MyBase. После нажатия кнопки ОК в окне Обозреватель серверов появляется новый узел MyBase.

Если на этом узле нажать на символ “+”, то открывается структура базы данных.

Рис. 1.4. Структура базы данных MyBase


При входе в любую базу данных в окне Обозреватель серверов открывается список разделов, где отображаются однотипные объекты базы данных:

Схемы базы данных – диаграммы, которые показывают связи между таблицами;

Таблицы – все таблицы базы данных;

Представления – логические таблицы, данные которых отобраны из одного или нескольких таблиц;

Хранимые процедуры – процедуры, которые хранятся в файле базы данных.


Порядок создания таблиц базы данных с помощью утилиты Обозреватель серверов:

Для этого выделяйте узел Таблицы и из контекстного меню этого узла вызывайте команду Добавить новую таблицу. При этом в рабочей области Visual Studio появляется окно определения структуры таблицы.

После определения структуры таблицы, эту таблицу следует сохранить. Для этого из главного меню выберите команду Файл/Сохранить Table и введите имя таблицы, например, Person.

Для заполнения таблицы с данными в окне Обозреватель серверов выберите таблицу и из контекстного меню выполните команду Показать таблицу данных. При этом в рабочей области появляется содержимое таблицы, где вы можете ввести данные записей.


2) Провайдеры данных технологии ADO.NET и соответствующие пространства имен. Добавление в проекте ссылку на посторонние сборки (провайдеры). Получение провайдеров данных из Интернета.

Программное обеспечение ADO.NET для подсоединения и взаимодействия с физической базой данных называется провайдером данных ADO.NET. Провайдер данных (data provider) — это управляемый код .NET, который эквивалентен провайдеру OLEDB(набор COM-интерфейсов, которые позволяют приложениям унифицировано работать с данными разных источников и хранилищ информации) или драйверу ODBC(программный интерфейс (API) доступа к базам данных). Провайдер данных состоит из нескольких объектов, которые реализуют необходимую функциональность в соответствии с определениями своих классов и интерфейсов.


В настоящее время существует три разных провайдера данных ADO.NET, каждый из которых определен в своем собственном пространстве имен. Для всех объектов в этих пространствах имен используются следующие префиксы: OleDb, Sql и Odbc.

Провайдер данных SqICIient

Оптимизирован для работы с SQL Server версии 7.0 (или выше) и позволяет добиться более высокой производительности по следующим причинам:

• взаимодействует с базой данных непосредственно через собственный протокол табличной передачи данных (Tabular Data Stream — TDS), а не через OLEDB с отображением интерфейса OLEDB на протокол TDS;

• исключает накладные расходы, связанные с использованием COM-служб взаимодействия;

• отсутствуют ненужные функции, которые не поддерживаются в SQL Server (объекты этого провайдера данных находятся в пространстве имен System.Data.SqlClient).

Провайдер данных Oledb

Основан на существующем COM-поставщике OLEDB и COM-службах взаимодействия платформы .NET Framework, предназначенных для доступа к базе данных. Этот провайдер данных используется для работы с SQL Server более ранних версий, чем 7.0. Он позволяет осуществлять доступ к любой базе данных, для которой имеется поставщик OLEDB. Объекты этого провайдера данных находятся в пространстве имен System.Data.Oledb.

Провайдер данных Odbc

Используется для доступа к базам данных, которые не имеют собственного провайдера данных .NET или COM-поставщика OLEDB. Объекты этого провайдера данных находятся в пространстве имен System.Data.Odbc.

Добавление в проекте ссылку на посторонние сборки

Есть два способа в зависимости от того, какие библиотеки тебе надо добавить.

  1. Если надо добавить ссылку на сборку, которая есть в стандартной поставке Visual Studio, то в начале кода просто допиши using <название сборки>.

  2. Если надо добавить внешнюю ссылку, то в дереве проекта (обозреватель решений) в разделе "Ссылки" нажми правой кнопкой и выбери пункт "Добавить ссылку" и там выбираешь то, что надо.


Провайдеры данных можно загрузить с сайта Microsoft.com.


3) Классы, для работы с удаленной базой данных. Классы для работы с локальной копией базы данных. Компоненты Visual Studio для работы с базой данных.

Выше в примере был указан простейший способ получения данных из MS SQL Server, где для скачивания данных был использован объект класса SqlDataAdapter. В общем случае, имеются различные классы, которые предназначены для соединения к базе данных, формирования и выполнения SQL-запроса. Ниже приведено использование еще двух классов технологии ADO.NET, которые предназначены для работы с базой данных MS SQL Server.

1. Класс SqlConnection – используется для установления соединения с базой данных, которая хранится в MS SQL-сервере.

2. Класс SqlCommand – применяется для формирования SQL-запроса, либо для вызова хранимой процедуры.

Эти классы имеют различных конструкторов, которые различаются друг от друга количеством и типом параметров. Для демонстрации работы с этими классами объявите следующие глобальные переменные и переопределите код обработчика события Form1_Load следующим образом:


public partial class Form1 : Form

{

SqlConnection conn;

SqlCommand cmd;


SqlDataAdapter adapPerson;

DataTable Person;

..............................


private void Form1_Load(object sender, EventArgs e)

{

string strConn = "Data Source=(local)\\SQLEXPRESS; " +

"Initial Catalog=MyBase;" +

"Integrated Security=True; Pooling=False";


conn = new SqlConnection(strConn);

conn.Open();


string strCmd = "SELECT Name,Post,Oklad, BirthDay FROM Person";



cmd = new SqlCommand(strCmd, conn);


adapPerson = new SqlDataAdapter(cmd);


Person = new DataTable();

adapPerson.Fill(Person);


dataGridView1.DataSource = Person;

}

Заметим, что удобством использования объектов этих классов является то, что эти объекты создаются только один раз, а затем они могут применяться в различных участках программы. Поэтому в дальнейших примерах будут использованы объекты этих классов.

В технологии ADO.NET для копирования таблиц из удаленного SQL-сервера на клиентский компьютер применяется объект класса SqlDataAdapter (адаптер). При создании объекта этого класса здесь указан SQL-запрос и строка подключения.

В этом примере локальная копия таблицы Person (а точнее, часть данных таблицы Person) хранится в объекте класса DataTable. Для скачивания данных по сети применяется метод Fill адаптера.

В среде Visual Studio для отображения данных таблицы на форме используют элемент управления DataGridView, на свойство DataSource этого элемента управления привязывают имя локальной таблицы.


4) Программа для соединения к удаленной базе данных MS SQL Server. Настройка классов SqlConnection, SqlCommand, SqlDataAdapter и т.д.

SQL Server Management Studio (SSMS) — утилита из Microsoft SQL Server 2005 и более поздних версий для конфигурирования, управления и администрирования всех компонентов Microsoft SQL Server. Утилита включает скриптовый редактор и графическую программу, которая работает с объектами и настройками сервера[1].

Главным инструментом SQL Server Management Studio является Object Explorer, который позволяет пользователю просматривать, извлекать объекты сервера, а также полностью ими управлять.

Также есть SQL Server Management Studio Express для Express версии сервера, которая является бесплатной. Однако в ней нет поддержки ряда компонентов (Analysis Services, Integration Services, Notification Services, Reporting Services) и SQL Server 2005 Mobile Edition.

Свойства классов SqlConnection, SqlCommand, SqlDataAdapter

SqlConnection 

AccessToken - Возвращает или задает токен доступа для подключения.

CanRaiseEvents - Возвращает значение, показывающее, может ли компонент вызывать событие. (Inherited from Component)

ClientConnectionId - Идентификатор соединения последней попытки подключения, независимо от того, успешно ли выполнена попытка или завершилась ошибкой.

ColumnEncryptionKeyCacheTtl - Возвращает или задает срок жизни для записей ключей шифрования столбцов в кэше ключей шифрования столбцов для функции Always Encrypted. Значение по умолчанию — 2 часа. 0 означает отсутствие кэширования.

ColumnEncryptionQueryMetadataCacheEnabled - Возвращает или задает значение, которое указывает, включено ли кэширование метаданных запроса (True) или нет (False) для параметризованных запросов к базам данных с поддержкой функции Always Encrypted. Значение по умолчанию — true.


ColumnEncryptionTrustedMasterKeyPaths - Позволяет задать список доверенных путей к разделам для сервера базы данных. Если при обработке запроса приложения драйвер получает путь к разделу, которого нет в списке, запрос завершится ошибкой. Это свойство обеспечивает дополнительную защиту от атак на систему безопасности, которые подразумевают предоставление скомпрометированным сервером SQL Server неверных путей к разделам, что может привести к утечке учетных данных хранилища ключей.

ConnectionString - Получает или задает строку, используемую для открытия базы данных SQL Server.

ConnectionTimeout - Получает время ожидания при попытке установки подключения, по истечении которого попытка подключения завершается и создается ошибка.

Container - Возвращает контейнер IContainer, содержащий компонент Component. (Inherited from Component)

Credential - Возвращает или задает объект SqlCredential для этого подключения.

Database - Получает имя текущей базы данных или базы данных, которая будет использоваться после открытия подключения.

DataSource - Получает имя экземпляра SQL Server, к которому осуществляется подключение.

DesignMode - Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время. (Inherited from Component)

Events - Возвращает список обработчиков событий, которые прикреплены к этому объекту Component. (Inherited from Component)

FireInfoMessageEventOnUserErrors - Возвращает или задает свойство FireInfoMessageEventOnUserErrors.

PacketSize - Получает размер сетевых пакетов (в байтах), используемых при взаимодействии с экземпляром SQL Server.

ServerVersion - Получает строку, содержащую версию экземпляра SQL Server, к которому подключается клиент.

Site - Возвращает или задает ISite объекта Component. (Inherited from Component)

State - Отображает состояние SqlConnection во время последней сетевой операции, выполненной по подключению.

StatisticsEnabled - Когда задано значение true, разрешает сбор статистических сведений для текущего подключения.

WorkstationId - Получает строку, определяющую клиента базы данных.

SqlCommand

CanRaiseEvents - Возвращает значение, показывающее, может ли компонент вызывать событие. (Inherited from Component)

ColumnEncryptionSetting - Возвращает или задает параметр шифрования столбца для этой команды.

CommandText - Возвращает или задает инструкцию Transact-SQL, имя таблицы или хранимую процедуру, выполняемую для источника данных.

CommandTimeout - Возвращает или задает время ожидания перед завершением попытки выполнить команду и созданием ошибки.

CommandType - Возвращает или задает значение, определяющее, как будет интерпретироваться свойство CommandText.

Connection - Возвращает или задает объект SqlConnection, используемый этим экземпляром класса SqlCommand.

Container - Возвращает контейнер IContainer, содержащий компонент Component. (Inherited from Component)

DesignMode - Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время. (Inherited from Component)

DesignTimeVisible - Возвращает или задает значение, указывающее, будет ли объект команды видимым в элементе управления Windows Forms Designer.


Events - Возвращает список обработчиков событий, которые прикреплены к этому объекту Component. (Inherited from Component)

Notification - Получает или задает значение, указывающее объект SqlNotificationRequest, связанный с данной командой.

NotificationAutoEnlist - Возвращает или задает значение, указывающее, должно ли приложение автоматически получать уведомления о запросах от общего объекта SqlDependency.

Parameters - Возвращает набор SqlParameterCollection.

Site - Возвращает или задает ISite объекта Component. (Inherited from Component)

Transaction - Возвращает или задает транзакцию SqlTransaction, в которой выполняется команда SqlCommand.

UpdatedRowSource - Возвращает или задает способ применения результатов команды к объекту DataRow при использовании метода Update объекта DbDataAdapter.

SqlDataAdapter

AcceptChangesDuringFill - Возвращает или задает значение, указывающее, вызывается ли метод AcceptChanges() в объекте DataRow после его добавления к объекту DataTable при выполнении любой из операций Fill. (Inherited from DataAdapter)

AcceptChangesDuringUpdate - Возвращает или задает, вызывается ли метод AcceptChanges() при вызове метода Update(DataSet). (Inherited from DataAdapter)

CanRaiseEvents - Возвращает значение, показывающее, может ли компонент вызывать событие. (Inherited from Component)

Container - Возвращает контейнер IContainer, содержащий компонент Component. (Inherited from Component)

ContinueUpdateOnError - Возвращает или задает значение, указывающее, следует ли генерировать ли исключение при обнаружении ошибки во время обновления строки. (Inherited from DataAdapter)

DeleteCommand - Возвращает или задает инструкцию Transact-SQL или хранимую процедуру, используемую для удаления записей из набора данных.

DesignMode - Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время. (Inherited from Component)

Events - Возвращает список обработчиков событий, которые прикреплены к этому объекту Component. (Inherited from Component)

FillCommandBehavior - Возвращает или задает реакцию команды, использованной для заполнения адаптера данных. (Inherited from DbDataAdapter)

FillLoadOption - Возвращает или задает значение перечисления типа LoadOption, определяющее, как адаптер заполняет объект DataTable из объекта DbDataReader. (Inherited from DataAdapter)

IDataAdapter.TableMappings - Указывает, как исходная таблица сопоставлена с таблицей набора данных. (Inherited from DataAdapter)

InsertCommand - Возвращает или задает инструкцию Transact-SQL или хранимую процедуру, используемую для вставки новых записей в источник данных.

MissingMappingAction - Определяет действие, выполняемое, если входные данные не соответствуют таблице или столбцу. (Inherited from DataAdapter)

MissingSchemaAction - Определяет действие, которое должно быть выполнено, если существующая схема DataSet не соответствует входным данным. (Inherited from DataAdapter)

ReturnProviderSpecificTypes - Возвращает или задает, должен ли метод Fill возвращать зависящие от поставщика значения или обычные CLS-совместимые значения. (Inherited from DataAdapter)

SelectCommand - Возвращает или задает инструкцию Transact-SQL или хранимую процедуру, используемую для выбора записей из источника данных.