DataSet
SqlDataAdapter и загрузка данных в DataSet
Ранее для получения данных мы использовали объект SqlDataReader, с помощью которого построчно можно перебрать ответ от сервера базы данных. Но есть и другой способ, который демонстрирует использование объектов DataSet.
Класс DataSet из пространства имен System.Data представляет хранилище или кэш данных в памяти, извлеченных из источника данных. Объект DataSet содержит таблицы, которые представлены типом DataTable. Таблица DataTable, в свою очередь, состоит из столбцов и строк. Каждый столбец представляет объект DataColumn, а строка - объект DataRow.
Для наполнения объекта DataSet данными из источника данных применяется класс System.Data.Common.DataAdapter (который реализует интерфейс System.Data.IDataAdapter), а точнее его реализации, предназначенные для работы с определенной СУБД.
Для заполнения объекта DataSet у объекта DataAdapter вызывается метод Fill(), в который в качестве параметра передается заполняемый объект DataSet.
Метод Fill() неявно открывает объект подключения, который хранится в свойстве Connection объекта DataAdapter, если это подключение не открыто. Если метод Fill() открывает подключение, то после получения данных метод Fill закрывает это подключение.
Если подключение до вызова метода Fill() ранее уже было открыто, например, с помощью метода Open()/OpenAsync(), метод Fill просто использует это подключение.
SqlDataAdapter
Для работы с БД SQL Server пакет Microsoft.Data.SqlClient как раз предоставляет реализацию DataAdapter в виде класса SqlDataAdapter.
Для получения данных через объект SqlDataAdapter необходимо организовать подключение к БД и выполнить команду SELECT. Есть несколько способов создания SqlDataAdapter:
1
2
3
4
|
SqlDataAdapter adapter = new SqlDataAdapter();
SqlDataAdapter adapter = new SqlDataAdapter(command);
SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
SqlDataAdapter adapter = new SqlDataAdapter(sql, connectionString);
|
Для работы SqlDataAdapter необходим объект SqlConnection, либо строка подключения и выполняемое SQL-выражение "SELECT".
Пример наполнения DataSet с помощью SqlDataAdapter:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System;
using System.Data;
using Microsoft.Data.SqlClient;
namespace HelloApp
{
class Program
{
static void Main(string[] args)
{
string connectionString = "Server=(localdb)\\mssqllocaldb;Database=adonetdb;Trusted_Connection=True;";
string sql = "SELECT * FROM Users";
using (SqlConnection connection = new SqlConnection(connectionString))
{
// Создаем объект DataAdapter
SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
// Создаем объект DataSet
DataSet ds = new DataSet();
// Заполняем Dataset
adapter.Fill(ds);
}
Console.Read();
}
}
}
|
В этом случае в DataSet окажутся данные, извлеченные с помощью выражения SELECT * FROM Users.
Do'stlaringiz bilan baham: |