DataSet yordamida malumotlarni o‘qish. DataSet bilan jadval, ustun va satrlarga murojat.
SqlDataAdapter va DataSet bilan ishlash
SqlDataAdapter va DataSet
Ilgari biz ma'lumotlar olish uchun SqlDataReader ob'ektidan foydalanganmiz, bu ma'lumotlar bazasi serveridan javob satrini takrorlash uchun ishlatilishi mumkin. Ammo SqlDataAdapter va DataSet ob'ektlaridan foydalanishni ko'rsatadigan yana bir usul mavjud. DataSet ma'lumotlar ulanishidan qat'i nazar siz ishlashingiz mumkin bo'lgan ma'lumotlar do'konini aks ettiradi va SqlDataAdapter ma'lumotlar bazasini ma'lumotlar bazasi bilan to'ldiradi.
SqlDataAdapter ob'ekti orqali ma'lumotlarni qabul qilish uchun ma'lumotlar bazasiga ulanish o'rnatishingiz va SELECT buyrug'ini bajarishingiz kerak. SqlDataAdapter yaratishning bir necha yo'li mavjud:
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);
|
• Siz konstruktorni parametrsiz ishlatishingiz va SELECT buyrug'ini va ulanishni keyinroq o'rnatishingiz mumkin
• SqlCommand ob'ektini konstruktorga topshirishingiz mumkin
• Siz konstruktorda sql ifodasini SELECT va SqlConnection moslamasini o'rnatishingiz mumkin
• Konstruktorda sql-ifoda SELECT va ulanish satrini o'rnatishingiz mumkin
SqlDataAdapter orqali ma'lumotlarni qanday qilib DataSet-ga olishni ko'rib chiqamiz. DataSet bilan ishlash uchun, ayniqsa, Windows Forms DataGridView kabi tashqi ma'lumotlar manbasidan to'ldirilishi mumkin bo'lgan boshqaruv elementlaridan foydalanish juda qulaydir. Shuning uchun biz Windows Forms Application turidagi yangi loyihani yaratamiz.
Loyihadagi yagona shaklga DataGridView elementini qo'shing va quyidagi shakl kodini aniqlang:
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace AdoNetWinFormsApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True";
string sql = "SELECT * FROM Users";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Создаем объект DataAdapter
SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
// Создаем объект Dataset
DataSet ds = new DataSet();
// Заполняем Dataset
adapter.Fill(ds);
// Отображаем данные
dataGridView1.DataSource = ds.Tables[0];
}
}
}
}
Shakl konstruktorida ma'lumotlar DataGridView-ga yuklanadi. Ma'lumotlarni yuklash uchun ulanish ob'ekti va SELECT sql ifodasini qabul qiladigan SqlDataAdapter ob'ekti yaratiladi. Keyinchalik DataSet yaratiladi va unga adapter.Fill () usuli yordamida ma'lumotlar yuklanadi. Keyinchalik, DataGridView uchun ma'lumot manbai o'rnatilgan:
1
|
dataGridView1.DataSource = ds.Tables[0];
|
DataSet-dagi jadvallardan biri manba sifatida o'rnatiladi. Har bir jadval DataTable ob'ektini aks ettiradi va bunday jadvallarning ko'pini DataSet-da aniqlash mumkin. Ammo bu holda, tortib olayotganda DataSet-da bitta jadval mavjud, biz uni jadvallar to'plamidan indeks bo'yicha olishimiz mumkin.
So'nggi mavzuda biz SqlDataAdapter orqali ma'lumotlarni DataSet-ga yuklashni va keyin ularni DataGridView-da namoyish qilishni ko'rib chiqdik. Ammo, agar ma'lumotlar bazasida qatorlar ko'p bo'lsa, unda qulayroq ishlash uchun ushbu ma'lumotlarni alohida qismlarga yoki sahifalarga ajratish kerak bo'lishi mumkin. DataGridView-dan foydalanib, ob'ektni sahifaviy ko'rinishini yaratish juda oson. Buning uchun biz DataGridView formasida va ikkita tugmachani belgilaymiz - navbati bilan oldinga va orqaga o'tish uchun backButton va nextButton.
Keyin biz quyidagi shakl kodini aniqlaymiz:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace PagingApp
{
public partial class Form1 : Form
{
int pageSize = 5; // размер страницы
int pageNumber = 0; // текущая страница
string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True";
SqlDataAdapter adapter;
DataSet ds;
public Form1()
{
InitializeComponent();
dataGridView1.SelectionMode=DataGridViewSelectionMode.FullRowSelect;
dataGridView1.AllowUserToAddRows = false;
using (SqlConnection connection = new SqlConnection(connectionString))
{
adapter = new SqlDataAdapter(GetSql(), connection);
ds = new DataSet();
adapter.Fill(ds, "Users");
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Columns["Id"].ReadOnly = true;
}
}
// обработчик кнопки Вперед
private void nextButton_Click(object sender, EventArgs e)
{
if (ds.Tables["Users"].Rows.Count < pageSize) return;
pageNumber++;
using (SqlConnection connection = new SqlConnection(connectionString))
{
adapter = new SqlDataAdapter(GetSql(), connection);
ds.Tables["Users"].Rows.Clear();
adapter.Fill(ds,"Users");
}
}
// обработчик кнопки Назад
private void backButton_Click(object sender, EventArgs e)
{
if (pageNumber==0) return;
pageNumber--;
using (SqlConnection connection = new SqlConnection(connectionString))
{
adapter = new SqlDataAdapter(GetSql(), connection);
ds.Tables["Users"].Rows.Clear();
adapter.Fill(ds, "Users");
}
}
private string GetSql()
{
return "SELECT * FROM Users ORDER BY Id OFFSET ((" + pageNumber + ") * " + pageSize + ") " +
"ROWS FETCH NEXT " + pageSize + "ROWS ONLY";
}
}
}
PageSize o'zgaruvchisi bir varaqdagi satrlar sonini belgilaydi va pageNumber o'zgaruvchisi hozir ko'rilayotgan sahifa sonini saqlaydi.
Ma'lumotlar bazasi so'rovi GetSql () funktsiyasi yordamida yaratiladi.
Oldinga o'tkazish tugmachasida joriy sahifa bittaga ko'paytiriladi va so'rov qilinadi. Orqaga tugma ishlov beruvchisi joriy sahifaning hisoblagichini kamaytiradi.
Do'stlaringiz bilan baham: |