Mavzu: ado. Net reja: ado. Net asoslari ado. Net oby’ekt va sinflari. System. Data fazosidan foydalanish. DataReader bilan ma’lumotlarni o`qish. DataSet yordamida ma’lumotlarni o`qish. DataSet bilan jadval, ustun va satrlarga murojaat


 DataSet yordamida ma’lumotlarni o`qish. DataSet bilan jadval, ustun va satrlarga



Yüklə 0,83 Mb.
Pdf görüntüsü
səhifə11/13
tarix23.05.2023
ölçüsü0,83 Mb.
#120502
1   ...   5   6   7   8   9   10   11   12   13
Reja ado. Net asoslari

5. DataSet yordamida ma’lumotlarni o`qish. DataSet bilan jadval, ustun va satrlarga 
murojaat.
DataSet va DataTable. Ma'lumotlar bazasidan SqlDataAdapter orqali DataSet-da ma'lumotlarni 
olgandan so'ng, biz ulanishdan qat'i nazar, ushbu ma'lumotlar bilan mahalliy ravishda ishlashimiz 
mumkin. Bundan tashqari, agar biz biron bir ma'lumotlar bazasidan foydalanishga hojat yo'q bo'lsa, 
lekin ayni paytda jadvallar to'plami shaklida ma'lumotlar bilan ishlash uchun qulay funktsiyaga ega 
bo'lishni istasak, unda biz DataSet klassidan ham foydalanishimiz mumkin. 
DataSet ob'ekti DataTable turi bilan ta'minlangan jadvallarni o'z ichiga oladi. O'z navbatida, 
jadval ustunlar va satrlardan iborat. Har bir ustun DataColumn ob'ekti, satr esa DataRow ob'ekti. Qator 
ma'lumotlari ItemArray xususiyatida saqlanadi, bu ob'ektlarning qatorini - satrdagi alohida 
hujayralarning qiymatlarini anglatadi. Masalan, biz barcha jadvallarni olamiz va ularning tarkibini 
ko'rsatamiz: 
static void Main(string[] args) { 
string sql = "SELECT * FROM Users"; 
string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated 
Security=True"; 
using (SqlConnection connection = new SqlConnection(connectionString)) 

connection.Open(); 
SqlDataAdapter adapter = new SqlDataAdapter(sql, connection); 
DataSet ds = new DataSet(); 
adapter.Fill(ds); 
// перебор всех таблиц 
foreach (DataTable dt in ds.Tables) { 
Console.WriteLine(dt.TableName); // Jadval nomlanishi 
// перебор всех столбцов 
foreach(DataColumn column in dt.Columns) 
Console.Write("\t{0}", column.ColumnName); 
Console.WriteLine(); 
// перебор всех строк таблицы 
foreach (DataRow row in dt.Rows) 



// получаем все ячейки строки 
var cells = row.ItemArray; 
foreach (object cell in cells) 
Console.Write("\t{0}", cell); 
Console.WriteLine(); 




Endi DataSet va DataTable ob'ektlari bilan qandaydir ma'lumotlar bazasini ishlatmasdan 
qanday ishlashimiz mumkinligini ko'rib chiqamiz. Masalan, biz DataSet-da qo'lda bir nechta jadval 
yaratamiz va ularning tarkibini aniqlaymiz: 
static void Main(string[] args) { 
DataSet bookStore = new DataSet("BookStore"); 
DataTable booksTable = new DataTable("Books"); 
// dataset ga jadval qo'shing 
bookStore.Tables.Add(booksTable); 
// Books jadvali uchun ustunlar yarating 
DataColumn idColumn = new DataColumn("Id", Type.GetType("System.Int32")); 
idColumn.Unique = true; // ustun noyob qiymatga ega bo'ladi 
idColumn.AllowDBNull = false; // nullni qabul qila olmaydi 
idColumn.AutoIncrement = true; // avtomatik kattalashtirish 
idColumn.AutoIncrementSeed = 1; // boshlang'ich qiymati 
idColumn.AutoIncrementStep = 1; // yangi satr qo'shishda o'sish. 
DataColumn nameColumn = new DataColumn("Name", Type.GetType("System.String")); 
DataColumn priceColumn = new DataColumn("Price", Type.GetType("System.Decimal")); 
priceColumn.DefaultValue = 100; // standart qiymat 
DataColumn discountColumn = new DataColumn("Discount", Type.GetType("System.Decimal")); 
discountColumn.Expression = "Price * 0.2"; 
booksTable.Columns.Add(idColumn); 
booksTable.Columns.Add(nameColumn); 
booksTable.Columns.Add(priceColumn); 
booksTable.Columns.Add(discountColumn); 
// books jadvalining asosiy kalitini aniqlang 
booksTable.PrimaryKey = new DataColumn[] { booksTable.Columns["Id"] }; 
DataRow row = booksTable.NewRow(); 
row.ItemArray = new object[] { null, "Война и мир", 200 }; 
booksTable.Rows.Add(row); // добавляем первую строку 
booksTable.Rows.Add(new object[] { null, "Отцы и дети", 170 }); 
 // ikkinchi qatorni qo'shing 
Console.Write("\tИд \tНазвание \tЦена \tСкидка"); 
Console.WriteLine(); 
foreach (DataRow r in booksTable.Rows) { 


foreach (var cell in r.ItemArray) 
Console.Write("\t{0}", cell); 
Console.WriteLine(); 

Console.Read();

Keling, barcha kodni tahlil qilaylik. Birinchidan, ma'lumotlar konstruktoriga berilgan DataSet 
va DataTable ob'ektlari yaratiladi. Keyin to'rtta ustun yaratiladi. Konstruktordagi har bir ustun ikkita 
parametrni oladi: ustun nomi va uning turi. 
DataColumn idColumn = new DataColumn("Id", Type.GetType("System.Int32"));
 
Bundan tashqari, Id ustuni uchun, ushbu ustunning qiymatlari noyob qiymatga ega bo'lishi 
kerakligi, nullni qabul qilmasligi kerakligi va yangi ob'ekt qo'shilganda ularning qiymati bittaga 
ko'payishi aniqlandi. Ya'ni, aksariyat ma'lumotlar bazalarida bo'lgani kabi, bu standart Id ustunidir. 
Keyinchalik, yana uchta ustun yaratiladi va Discount ustuni uchun Expression xususiyati ustun 
qiymatini hisoblash uchun ishlatiladigan ifoda ko'rsatiladi: 
discountColumn.Expression = "Price * 0.2";
 
Ya'ni, bu holda, chegirma ustunining qiymati 0,2 ga ko'paytirilgan Price ustunining qiymatiga 
tengdir. Keyin, jadvalning boshlang'ich kaliti PrimaryKey xususiyati yordamida o'rnatiladi: 
booksTable.PrimaryKey = new DataColumn[] { booksTable.Columns["Id"] };
 
Birlamchi kalit - bu Id ustunidir. Ammo biz kompozit kalitni yaratish uchun turli xil ustunlar 
to'plamidan foydalanishimiz mumkin. Jadval sxemasini aniqlagandan so'ng unga ikkita qator qo'shiladi: 
DataRow row = booksTable.NewRow(); 
row.ItemArray = new object[] { null, "Война и мир", 200 }; 
booksTable.Rows.Add(row); // добавляем первую строку 
booksTable.Rows.Add(new object[] {null, "Отцы и дети", 170 }); 
BookTable.Rows.Add usulidagi qiymatlar to'g'ridan-to'g'ri ob'ektlar qatori yoki DataRow 
ob'ekti sifatida uzatilishi mumkin. Bunday holda, biz ustunlar jadvalidagi kabi to'liq qiymatlarni 
uzatishimiz kerak. Biroq, Idning birinchi ustuni avtomatik o'sish orqali o'rnatilgandan so'ng, biz nol 
qiymatini berishimiz mumkin - u baribir e'tiborga olinmaydi. Shuningdek, Discount ustunining oxirgi 
parametrini tashlab yuborish mumkin, chunki uning qiymati "Price * 0.2" ifodasi yordamida 
hisoblanadi. Bundan tashqari, biz Price ning uchinchi ustuni uchun qiymatni qoldirib ketamiz, chunki 
uda DefaultValue xususiyati mavjud, agar u hech qanday qiymat bo'lmasa, standart qiymatni belgilaydi: 
booksTable.Rows.Add(new object[] {null, " Otalar va bolalar "}); 
Va oxirida, jadvalning satrlari bo'ylab takrorlanadi. Qo'shish bilan bir qatorda, biz boshqa 
operatsiyalarni strings yordamida amalga oshirishimiz mumkin. Masalan, biz indeks bo'yicha qator 
olishimiz mumkin: 
DataRow row = booksTable.Rows[0]; //birinchi qator 
Qatorlarni indeks bo'yicha olgandan so'ng, siz uning kataklarini o'zgartirishingiz mumkin: 
booksTable.Rows [0] [2] = 300; // birinchi qatorning uchinchi katagi 300 ga o'rnatildi 
Shuningdek, siz satrni o'chirishingiz mumkin: 
booksTable.Rows.RemoveAt (1); // ikkinchi qatorni indeks bo'yicha o'chirish 
// olib tashlashning boshqa usuli 
DataRow row = booksTable.Rows [0]; 
booksTable.Rows.Remove (row); 
DataTable-ning Select () usulidan foydalanib, biz ma'lum bir mezonga mos keladigan 
qatorlarni osongina topamiz. Masalan, biz 120 dan oshadigan qatorlarni olamiz: 
var selectedBooks = booksTable.Select("Price > 120");
 


foreach
 
(var b in
 
selectedBooks)
 
Console.WriteLine("{0} - {1}", b["Name"], b["Price"]);
 

Yüklə 0,83 Mb.

Dostları ilə paylaş:
1   ...   5   6   7   8   9   10   11   12   13




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin