ЧТО ТАКОЕ DATASET В ADO.NET?
Проще говоря, DataSet-это локальная копия таблицы базы данных,которая заполняется на клиентском компьютере. Он не зависит от источника данных и, поскольку он существует в локальной системе, он делает приложение быстрым и надежным. Доступ к удаленной базе данных каждый раз для обновления или получения сведений занимает много времени, поэтому наборы данных помогают сохранить локальные таблицы базы данных на вашем компьютере.
A DataSet
ведет себя как реальная база данных и представляет собой полный набор данных, который включает таблицы, ограничения и отношения между таблицами. Используя DataAdapters можно заполнить DataSet и использовать этот dataset для извлечения и хранения информации. Когда все задачи будут выполнены, обновите реальную базу данных с помощью наборов данных.
ЧТО ТАКОЕ DATAADAPTERS?
DataAdapters
используются для управления наборами данных, и это обеспечивает связь между наборами данных и источником данных. Адаптеры данных устанавливают соединение с источником данных, а затем заполняют данные наборами данных. Он также обновляет источник данных с наборами данных.
ВАЖНЫЕ СВОЙСТВА И МЕТОДЫ АДАПТЕРОВ ДАННЫХ
Свойства | Описание |
---|---|
DeleteCommand | Он используется для удаления записей из источника данных |
InsertCommand | Он используется для добавления новой записи в источник данных |
SelectCommand | Он используется для выбора записей из источника данных |
UpdateCommand | Он используется для обновления записей в источнике данных. |
TableMapping | Он используется для сопоставления фактических таблиц базы данных и наборов данных. |
Метод | Описание |
---|---|
Fill | Этот метод заполняет записи из DataAdapters в наборы данных. |
Update | Этот метод обновляет источник данных с помощью наборов данных. |
using System; using System.Data.SqlClient; using System.Data; namespace DataSet_Example { class Program { static void Main(string[] args) { string ConString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ComputerShop;Integrated Security=True"; string querystring = "Select * from Items"; SqlDataAdapter adapter = new SqlDataAdapter(querystring, ConString); DataSet ds = new DataSet(); adapter.Fill(ds, "Items"); Console.WriteLine(ds.GetXml()); Console.ReadKey(); } } }
ПРИМЕР приложения с DataSet и Grid View на C#
Создайте WinForm проект, перенесите соответствующие компоненты как на рисунке.

Извлечение данных из DataSet в GridView
using System; using System.Data; using System.Data.SqlClient; using System.Windows.Forms; namespace DataSet_Exampl { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnGetData_Click(object sender, EventArgs e) { string ConString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ComputerShop;Integrated Security=True"; string Query = "SELECT * FROM Items"; SqlDataAdapter adapter = new SqlDataAdapter(Query,ConString); DataSet set = new DataSet(); adapter.Fill(set, "Items"); dataGridView1.DataSource = set.Tables["Items"]; } } }
1
Вывод

ОБНОВЛЕНИЕ, ВСТАВКА И УДАЛЕНИЕ ЗАПИСЕЙ В Dataset
После заполнения набора данных можно обновить, вставить или удалить запись из набора данных. Вот полный пример программы.
private void btnInsert_Click(object sender, EventArgs e)
{
//Fill Dataset
string ConString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ComputerShop;Integrated Security=True";
string Query = "SELECT * FROM Items";
SqlDataAdapter adapter = new SqlDataAdapter(Query, ConString);
DataSet set = new DataSet();
adapter.Fill(set, "Items");
//Adding New Row to DataSet
DataRow row = set.Tables["Items"].NewRow();
row["Name"] = "4GB DDR3 RAM";
row["Price"] = "$50";
row["Date"] = "26 May 2017";
set.Tables["Items"].Rows.Add(row);
dataGridView1.DataSource = set.Tables["Items"];
}
Вывод

Вставить строку в набор данных
Редактирование или обновление строки В наборе данных
Если вы не знаете индекс строки или уникальный номер строки по-прежнему можно обновить или изменить строку в наборе данных с помощью следующего метода.
private void btnUpdate_Click(object sender, EventArgs e)
{
//Fill Dataset
string ConString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ComputerShop;Integrated Security=True";
string Query = "SELECT * FROM Items";
SqlDataAdapter adapter = new SqlDataAdapter(Query, ConString);
DataSet set = new DataSet();
adapter.Fill(set, "Items");
set.Tables["Items"].Rows[1]["Name"] = "Graphics Card";
dataGridView1.DataSource = set.Tables["Items"];
}
Вывод

Удалить строку в наборе данных
Вы можете удалить строку из Dataset с помощью Delete()
метода.
private void btnDelete_Click(object sender, EventArgs e)
{
//Fill Dataset
string ConString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ComputerShop;Integrated Security=True";
string Query = "SELECT * FROM Items";
SqlDataAdapter adapter = new SqlDataAdapter(Query, ConString);
DataSet set = new DataSet();
adapter.Fill(set, "Items");
set.Tables["Items"].Rows[1].Delete();
dataGridView1.DataSource = set.Tables["Items"];
}
Вывод

СОХРАНИТЬ ИЗМЕНЕНИЯ НАБОРА ДАННЫХ В БАЗЕ ДАННЫХ
После изменения набора данных можно сохранить изменения набора данных в базе данных.
пример программы
private void btnSave_Click(object sender, EventArgs e)
{
//Fill Dataset
string ConString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ComputerShop;Integrated Security=True";
string Query = "SELECT * FROM Items";
SqlDataAdapter adapter = new SqlDataAdapter(Query, ConString);
DataSet set = new DataSet();
adapter.Fill(set, "Items");
//Adding New Row to DataSet and Update
DataRow row = set.Tables["Items"].NewRow();
row["Name"] = "4GB DDR3 RAM";
row["Price"] = "$50";
row["Date"] = "26 May 2017";
set.Tables["Items"].Rows.Add(row);
//Updating Database Table
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(set.Tables["Items"]);
MessageBox.Show("DataSet Saved to Database Successfully");
}
Полный листинг примера программы для работы с базой данных на C# :
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace DataSet_Exampl
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnGetData_Click(object sender, EventArgs e)
{
//Fill DataSet
string ConString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ComputerShop;Integrated Security=True";
string Query = "SELECT * FROM Items";
SqlDataAdapter adapter = new SqlDataAdapter(Query,ConString);
DataSet set = new DataSet();
adapter.Fill(set, "Items");
dataGridView1.DataSource = set.Tables["Items"];
}
private void btnUpdate_Click(object sender, EventArgs e)
{
//Fill Dataset
string ConString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ComputerShop;Integrated Security=True";
string Query = "SELECT * FROM Items";
SqlDataAdapter adapter = new SqlDataAdapter(Query, ConString);
DataSet set = new DataSet();
adapter.Fill(set, "Items");
set.Tables["Items"].Rows[1]["Name"] = "Graphics Card";
dataGridView1.DataSource = set.Tables["Items"];
}
private void btnInsert_Click(object sender, EventArgs e)
{
//Fill Dataset
string ConString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ComputerShop;Integrated Security=True";
string Query = "SELECT * FROM Items";
SqlDataAdapter adapter = new SqlDataAdapter(Query, ConString);
DataSet set = new DataSet();
adapter.Fill(set, "Items");
//Adding New Row to DataSet
DataRow row = set.Tables["Items"].NewRow();
row["ID"] = 3;
row["Name"] = "4GB DDR3 RAM";
row["Price"] = "$50";
row["Date"] = "26 May 2017";
set.Tables["Items"].Rows.Add(row);
dataGridView1.DataSource = set.Tables["Items"];
}
private void btnDelete_Click(object sender, EventArgs e)
{
//Fill Dataset
string ConString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ComputerShop;Integrated Security=True";
string Query = "SELECT * FROM Items";
SqlDataAdapter adapter = new SqlDataAdapter(Query, ConString);
DataSet set = new DataSet();
adapter.Fill(set, "Items");
set.Tables["Items"].Rows[1].Delete();
dataGridView1.DataSource = set.Tables["Items"];
}
private void btnSave_Click(object sender, EventArgs e)
{
//Fill Dataset
string ConString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ComputerShop;Integrated Security=True";
string Query = "SELECT * FROM Items";
SqlDataAdapter adapter = new SqlDataAdapter(Query, ConString);
DataSet set = new DataSet();
adapter.Fill(set, "Items");
//Adding New Row to DataSet and Update
DataRow row = set.Tables["Items"].NewRow();
row["Name"] = "4GB DDR3 RAM";
row["Price"] = "$50";
row["Date"] = "26 May 2017";
set.Tables["Items"].Rows.Add(row);
//Updating Database Table
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(set.Tables["Items"]);
MessageBox.Show("DataSet Saved to Database Successfully");
}
}
}