Сделай Сам Свою Работу на 5

Подключение к источнику данных





Московский Государственный

Технический Университет

Им. Н.Э. Баумана

Калужский филиал

 

 

ЛАБОРАТОРНАЯ РАБОТА №6

по дисциплине:

Базы даных

на тему:

«Доступ к данным. ADO.NET»

 

 

 

Калуга, 2013

 

 

Теоретические сведения.

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

 

ADO.NET — это набор классов, предоставляющих службы доступа к данным программисту, работающему на платформе .NET Framework. ADO.NET имеет богатый набор компонентов для создания распределенных приложений, совместно использующих данные. Это неотъемлемая часть платформы .NET Framework, которая предоставляет доступ к реляционным данным, XML-данным и данным приложений. ADO.NET удовлетворяет различные потребности разработчиков, включая создание клиентских приложений баз данных, а также бизнес-объектов среднего уровня, используемых приложениями, средствами, языками и браузерам.



 

 

Как видно из данной диаграммы, основу ADO.NET составляют два основных компонента (разумеется, в данном случае речь не идет о компонентах COM): DataSet и Провайдер Данных.

 

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


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

Connection используется для установления соединения с источником данных, а также для управления транзакциями.

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

DataAdapter служит связующим звеном между DataSet и источником данных. Он использует Command для выполнения команд SQL как для заполнения DataSet данными, так и для обратной передачи измененных клиентом данных к источнику. Для выполнения этих функций объект имеет 4 метода: SelectCommand, InsertCommand, UpdateCommand и Deletecommand.

DataReader представляет однонаправленный поток данных от источника только на чтение. Если приложение клиента не модифицирует данные и не требуется произвольная выборка данных, а достаточно их однократного просмотра, то использование DataReader вместо DataSet позволит сохранить ресурсы RAM и CPU, а также поднять быстродействие приложения.



 

DataSet


DataSet можно представить себе как небольшую реляционную базу данных, резидентную в оперативной памяти клиента. В DataSet загружаются данные, после чего соединение с их источником (или источниками, которых в принципе может быть несколько, поскольку в одном экземпляре DataSet могут объединяться данные из нескольких источников) может быть разорвано. Далее клиент в автономном режиме производит обработку данных, при необходимости модифицирует их, после чего снова устанавливается соединение с источником и модифицированные данные передаются обратно. Такая схема работы может оказаться предпочтительной для корпоративных приложений, работающих в глобальных сетях, где поддержание постоянного соединения может повлечь дополнительные накладные расходы.

ataSet может сохранять свое текущее содержимое в файлах XML, а схему в виде XML Schema definition language (XSD).

Внутреннее устройство DataSet:

 

 

Рассмотрим вкратце наиболее важные компоненты DataSet, не углубляясь во второстепенные детали.

DataSet включает две основные коллекции: DataTableCollection и DataRelationCollection.

DataTableCollection это коллекция объектов DataTable, каждый из которых представляет одну таблицу отношения и в свою очередь состоит из коллекций:


  • DataColumnCollection представляет все столбцы таблицы. Помимо данных, столбец может включать формулу для динамического расчета своего содержимого.
  • DataRowCollection представляет набор строк таблицы (возможно, пустой). Следует отметить, что хранятся не только текущие значения данных, но и первоначальные, что позволяет выделить измененные данные.
  • ConstraintCollection набор ограничений целостности данных (например, можно задать, допустимо ли для данного столбца значение NULL или должны ли данные быть уникальными).

 



Соответствие типов данных:

Тип SQL Тип C#
BigInt Int64 . 64-разрядное целое число со знаком.
Binary Array имеет тип данных Byte. Поток фиксированной длины из двоичных данных, имеющий длину от 1 до 8000 байтов.
Bit Boolean . Числовое значение без знака, которое может быть равно 0, 1 или null.
Char String . Поток фиксированной длины из символов, не принадлежащих кодировке Юникод. В нем может быть от 1 до 8000 символов.
DateTime DateTime . Значение даты и времени, лежащее в диапазоне от 1 января 1753 года до 31 декабря 9999 года и имеющее точность 3.33 миллисекунды.
Decimal Decimal . Числовое значение с фиксированной точностью и масштабом в диапазоне от -10 38 -1 до 10 38 -1.
Float Double . Числовое значение с плавающей запятой, лежащее в диапазоне от -1.79E +308 до 1.79E +308.
Image Array имеет тип данных Byte. Поток переменной длины из двоичных данных, имеющий длину от 0 до 2 31 -1 (или 2 147 483 647) байтов.
Int Int32 . 32-разрядное знаковое целое число.
Money Decimal . Значение типа currency, лежащее в диапазоне от -2 63 (или -9 223 372 036 854 775 808) до 2 63 -1 (или +9 223 372 036 854 775 807) и имеющее точность до одной десятитысячной денежной единицы.
NChar String . Поток фиксированной длины из символов кодировки Юникод. В нем может быть от 1 до 4 000 символов.
NText String . Поток переменной длины из данных Юникод, максимальная длина которого равна 2 30 -1 (1 073 741 823) символов.
NVarChar String . Поток переменной длины из символов кодировки Юникод. В нем может быть от 1 до 4 000 символов.Неявное преобразование не может быть выполнено, если длина строки превышает 4 000 символов. Поэтому при работе со строками длиннее 4 000 символов нужно явно задавать значение этого объекта. Используйте NVarChar, если столбец базы данных имеет тип nvarchar(max).
Real Single . Числовое значение с плавающей запятой, лежащее в диапазоне от -3,40E +38 до 3,40E +38.
UniqueIdentifier Guid . Глобальный уникальный идентификатор (GUID).
SmallDateTime DateTime . Значение даты и времени, лежащее в диапазоне от 1 января 1900 года до 6 июня 2079 года, точность которого равна одной минуте.
SmallInt Int16 . 16-разрядное знаковое целое число.
SmallMoney Decimal . Денежная сумма в диапазоне от -214 748,3648 до +214 748,3647 с точностью, равной одной десятитысячной денежной единицы.
Text String . Поток переменной длины из символов, не принадлежащих кодировке Юникод, максимальная длина которого равна 2 31 -1 (2 147 483 647) символов.
Timestamp Array имеет тип данных Byte. Автоматически создаваемые двоичные числа, которые гарантированно являются уникальными в пределах базы данных. Значения timestamp обычно используются для отметки версий строк таблицы. Размер при хранении — 8 байт.
TinyInt Byte . 8-разрядное целое число без знака.
VarBinary Array имеет тип данных Byte. Поток переменной длины из двоичных данных, имеющий длину от 1 до 8000 байт.Неявное преобразование не может быть выполнено, если длина массива превышает 8 000 байтов. Поэтому при работе с массивами байтов, состоящими из более чем 8000 байтов, нужно явно задать значение этого объекта.
VarChar String . Поток переменной длины из символов, не принадлежащих кодировке Юникод. В нем может быть от 1 до 8000 символов. Используйте VarChar, если столбец базы данных имеет тип varchar(max).
Variant Object . Специальный тип данных, который может содержать числовые, строковые, двоичные данные, даты, а также значения Empty и Null, относящиеся к SQL Server. Если ни один тип не объявлен, считается, что данные имеют этот тип.
Xml Значение XML. Получает XML как строку с помощью метода GetValue или свойства Value, или в качестве средства чтения XmlReader путем вызова метода CreateReader.
Udt Тип UDT SQL Server 2005.
Structured Специальный тип данных для определения структурированных данных, содержащихся в параметрах табличных значений.
Date Значение даты может находиться в диапазоне от 1 января 1 г. н. э. до 31 декабря 9999 года н. э.
Time Данные времени в 24-часовом формате. Значение времени может находиться в диапазоне от 00:00:00 до 23:59:59.9999999 с точностью до 100 наносекунд. Соответствует значению time SQL Server.
DateTime2 Данные даты и времени. Значение даты может находиться в диапазоне от 1 января 1 г. н. э. до 31 декабря 9999 года н. э. Значение времени может находиться в диапазоне от 00:00:00 до 23:59:59.9999999 с точностью до 100 наносекунд.
DateTimeOffset Данные даты и времени, поддерживающие часовые пояса. Значение даты может находиться в диапазоне от 1 января 1 г. н. э. до 31 декабря 9999 года н. э. Значение времени может находиться в диапазоне от 00:00:00 до 23:59:59.9999999 с точностью до 100 наносекунд. Часовые пояса могут находиться в диапазоне от -14:00 до +14:00.

 

 

Подключение к источнику данных

К какому бы источнику данных не происходило подключение, имеется несколько характеристик общих для всех подключений, например:

1. имя сервера;

2. способ аутентификации;

3. идентификатор пользователя;

4. пароль.

Создание объекта подключения

1)

SqlConnection connection = new SqlConnection();

string testConnectionStirng = "Data Source=(local};Initial"+

" Catalog=Northwind;Integrated Security=true";

connection.ConnectionString = testConnectionStirng;

2)

SqlConnection connection = new SqlConnection("Data"+

" Source=(local};Initial Catalog=Northwind;Integrated "+ "Security=true");

 

Выбор данных.

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

private static void ReadOrderData(string connectionString){ string queryString = "SELECT OrderID, CustomerID FROM dbo.Orders;"; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand( queryString, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); try { while (reader.Read()) { Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1])); } } finally { // Always call Close when done reading. reader.Close(); } }}

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

 

private static DataSet SelectRows(DataSet dataset,

string connectionString,string queryString)

{

using (SqlConnection connection =

new SqlConnection(connectionString))

{

SqlDataAdapter adapter = new SqlDataAdapter();

adapter.SelectCommand = new SqlCommand(

queryString, connection);

adapter.Fill(dataset);

return dataset;

}

}

 

Добавление данных

string sqlIns = "INSERT INTO table (name, information, other) VALUES (@name, @information, @other)";

using (SqlConnection connection = new SqlConnection(connectionString))

{

SqlConnection.Open();

SqlCommand cmdIns = new SqlCommand(sqlIns, SqlConnection);

cmdIns.Parameters.Add("@name", info);

cmdIns.Parameters.Add("@information", info1);

cmdIns.Parameters.Add("@other", info2);

cmdIns.ExecuteNonQuery();

}

 

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.