|
Qarshi davlat universiteti matematika va kompyuter ilmlari fakulteti amaliy matematika kafedrasi
|
bet | 9/12 | Sana | 21.05.2024 | Hajmi | 2,84 Mb. | | #249261 |
Bog'liq Kurs ishi namuna 1.6.1 Qatorlarni qo‘shish.
Ma'lumotlar DataGridView komponentasi yordamida tahrirlanishi mumkinligini allaqachon bilamiz, ammo ba'zida dasturiy ravishda qiymatlarni o‘zgartirish kerak bo‘ladi. Ma'lumotni o‘zgartirish uchun buyruqlar bilan bajariladigan .№-so‘rovlar yordamida ularni o‘zgartirishning ikkita usulini qilishingiz mumkin. O‘zgarishlarni saqlash usulini chaqirishda siz o‘zgartirishingiz saqlanadigan va serverga uzatiladigan jadvalning xususiyatlaridan foydalanishingiz mumkin.
SQL tilidan foydalanib ma'lumotlarni boshqarish boshqa kurs ishining mavzusidir, lekin jadval xususiyatlaridan foydalanish bizga kerak. Birinchidan, keling, jadvalga qanday qilib qator qo‘shishingiz mumkinligini ko‘rib chiqamiz, buning uchun ConstraintProject misolini 6-Reja dan oching va shaklga tugmachani qo‘shamiz, ustiga bosib biz satr yaratamiz, ma'lumotlarga to‘ldiramiz va jadvalga qo‘shamiz. Tugmani bosishda bajariladigan kod quyidagicha ko‘rinishi kerak:
Private void addRowButton_Click(object sender, EventArgs e)
{
DataRow row = table.NewRow();
row[1] = “Молоко”;
row[“Колочиство”] = 10;
row[“Цена”] = 16;
table.Rows.Add(row);
}
Kodning birinchi qatorida biz jadvalning NewRow () usulini chaqiramiz. Ushbu usul yangi satrni yaratadi, uning sxemasi jadvalga mos keladi, ya'ni jadvalda mos keladigan maydonlar bo‘ladi. Natijada yangi ob'ekt ob'ekt sifatida qaytariladi va DataRow ma'lumotlar turiga ega bo‘ladi. Kelgusida foydalanish uchun qiymatni o‘zgaruvchiga saqlaymiz.
Endi siz satrni qiymatlar bilan to‘ldirishingiz kerak. Ustun qiymatlariga kirish uchun siz ikkala ism va indekslardan foydalanishingiz mumkin. Indekslar tezroq va nomlar yanada universaldir, chunki ular ma'lumotlar tuzilishidan mustaqildir. Agar so‘rov natijasi va jadval tuzilishi o‘zgarganda, siz nomlar orqali maydonlar bilan ishlasangiz, misol ishlashda davom etadi.
Shunday qilib, satr qiymatlari "Items" maydonida saqlanadi, unga ham ob'ektlar, ham indeksator orqali kirish mumkin. Ushbu misolda men faqat indeksatordan foydalanaman, chunki menga ko‘proq yoqadi.
Maydonga indeks bo‘yicha kirish uchun indeksni kvadrat qavs ichida raqam sifatida ko‘rsatish kifoya. Shunday qilib, yaratilgan satr uchun sarlavhani qanday o‘rnatamiz:
row[1] =”Молоко”;
Ustun raqamlari noldan raqamlangan, ammo nol maydon - bu kalit, shuning uchun men uni o‘rnatmayman. Ammo birinchi maydon bu biz o‘zgartiradigan mahsulotning nomi.
Misoldagi qolgan maydon qiymatlari ismlar orqali belgilanadi. Masalan, quyidagi satr miqdorni o‘zgartiradi:
Row[“Колочиство”] =10;
Misolni ishga tushiring va tugmani bosing. E'tibor bering, yaratilgan chiziq darhol panjara ichida paydo bo‘ldi, garchi biz panjara yangilanishini so‘ramagan bo‘lsak ham. Hammasi o‘z-o‘zidan sodir bo‘ldi.
Yangi qatorni qo‘shishning yana bir usuli bor - LoadDataRow () usuli. Ushbu usul ikkita parametrni oladi: barcha ustunlar uchun qiymatlar qatori va o‘zgarishlarni qabul qilish-qilmaslikni belgilovchi Boolean qiymati. Agar ikkinchi parametr to‘g‘ri bo‘lsa, u holda AddChanges O usuli qo‘shiladi, aks holda satrning holati (RowState xususiyati) qo‘shilganga o‘zgartiriladi.
Ikkinchi parametr aniq, ammo bizning holatimizda birinchisiga nima qilish kerak? Birinchi parametr satr satrlari uchun bir qator qiymatlarni o‘z ichiga olishi kerak. Bizning oxirgi ikkita ustunimiz hisoblab chiqilgan, ularga nima o‘tkazish kerak? Ha, har qanday narsa. Siz istalgan raqamlarni ko‘rsata olasiz, ular qayta sanaladi. Men nol qiymatlarni muhim bo‘lmagan sohalarda ko‘rsatishni afzal ko‘raman, masalan, quyidagi misolda ko‘rsatilganidek:
Objeck[ ] newRow = { null, “Сахар” , 2 , 23, null, null };
table.LoadDataRow(newRow, false);
Yana bir variant bor - sizga kerak bo‘lgan massivda faqat mazmunli maydonlarni to‘ldirish kerak va aniqlanmaganlar avtomatik ravishda nol qiymatga ega bo‘ladi. Quyidagi misol faqat birinchi uchta ustun o‘rnatiladigan qator yaratadi. Qolganlari nolga teng bo‘ladi;
Object [ ] newRow = { null, “Сахар” , 2 };
Jadvalga yangi satr qo‘shsangiz va ushbu qatorni ma'lumotlar bazasida saqlashingiz kerak bo‘lsa, ikkinchi parametrda fa1se ni LoadDataRow () usuliga kiritishingiz kerak. Bunday holda, satr yangi deb belgilanadi va adapter ma'lumotni yangilash usulini yangilaganida, InsertCommand xossasi buyrug‘idan foydalanib, yangi satrning qiymatlari serverga uzatiladi "Agar ikkinchi parametr ishlamay qolsa, chiziq o‘zgarmas deb belgilanadi, bu usul chaqirilganda degan ma'noni anglatadi. Adapterni yangilash InsertCommand buyrug‘i bajarilmaydi va o‘zgarishlar serverga o‘tkazilmaydi.
Nima uchun ma'lumotlarga serverga berilmaydigan satrlarni yaratish kerak? Ba'zan bu juda zarur, masalan, butun satrda foydalanuvchi tomonidan saqlanadigan qiymatlar mavjud bo‘lganda.
|
| |