Добавлен: 09.02.2019
Просмотров: 1449
Скачиваний: 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.
Добавление в проекте ссылку на посторонние сборки
Есть два способа в зависимости от того, какие библиотеки тебе надо добавить.
-
Если надо добавить ссылку на сборку, которая есть в стандартной поставке Visual Studio, то в начале кода просто допиши using <название сборки>.
-
Если надо добавить внешнюю ссылку, то в дереве проекта (обозреватель решений) в разделе "Ссылки" нажми правой кнопкой и выбери пункт "Добавить ссылку" и там выбираешь то, что надо.
Провайдеры данных можно загрузить с сайта 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 или хранимую процедуру, используемую для выбора записей из источника данных.