|
Подключение к источнику данных
Московский Государственный
Технический Университет
Им. Н.Э. Баумана
Калужский филиал
ЛАБОРАТОРНАЯ РАБОТА №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 Все материалы защищены законодательством РФ.
|