Lestning 2.3 Ma'lumotlar bazasida DateSet-ga qo‘shilgan muddat

Lestning 2.3 Ma'lumotlar bazasida DateSet-ga qo‘shilgan muddat
// bu erda UpdateCommand xususiyatini to‘ldirish
…
// ma'lumotlar qo‘shilmoqda
adapter.InsertCommand = new OleDbCommand(“INSERT INTO Peoples (Фамилия , Имя, ДатаРождения, Пол) “ + “VALUES (?, ?, ?, ?)”);
adapter.InsertCommand.Parametres.Add(“Фамилия”, OleDbType.VarChar, 50 , “Фамилия”);
adapter.InsertCommand.Parametres.Add(“Имя”, OleDbType.VarChar, 50 , “Имя”);
adapter.InsertCommand.Parametres.Add(“ДатаРождения”, OleDbType.Date, 50 , “ДатаРождения”);
adapter.InsertCommand.Parametres.Add(“Пол”, OleDbType.VarChar, 50 , “Пол”);
adapter.InsertCommand.Connection =connection;
adapter.Update(dataset.Tables[0]);
Listing 2.3 Ma'lumotlar bazasiga yozuv qo‘shish uchun oxirgi qator
Joyni tejash uchun UpdateCommand xususiyatini joylashtiradigan kodni o‘tkazib yubordim. Qo‘shilgan qatorlarni saqlash uchun biz INSERT SQL buyrug‘ini Insertcommand xususiyatiga yozamiz, u yozuvni ma'lumotlar bazasiga qo‘shadi. Shundan so‘ng, parametrlar to‘plamini to‘ldiring. Bunday holda, qo‘shimcha so‘rovda men barcha maydonlarni, shu qatorda tug‘ilgan sanani to‘ldirishga qaror qildim, shuning uchun parametrlar to‘plamiga tug‘ilgan sanamizni ham qo‘shamiz.
InsertCommand buyrug‘i ulanish uchun foydalaniladigan ulanish ob'ektini aniq ko‘rsatishi kerak. Va oxirida biz barcha o‘zgarishlarni saqlaydigan adapterning Update () usulini chaqiramiz. Bu safar u nafaqat mavjud ma'lumotlarning o‘zgarishini, balki DataSee ma'lumotlar bazasiga qo‘shilgan barcha qatorlarni ham tejashga imkon beradi. Shuning uchun, har bir buyruqni alohida to‘ldirgandan so‘ng emas, balki yangilash va buyruqlar kiritilgandan keyin faqat bir marta Update () usuliga qo‘ng‘iroq qilish kifoya.
Yozuvlarni bitta jadvalda saqlash muammoga olib kelmaydi. Muammolar siz alohida jadvalda saqlangan manzilda bo‘lgani kabi ma'lumotlarni bir nechta jadvallarga tarqatishingiz kerak bo‘lganda yuzaga keladi. Oldin yozgan misolimizda, biz odam ma'lumotlarini bitta jadvalda, boshqasini manzilida saqlashimiz kerak edi. Agar biror kishi boshqa ma'lumotlar bazasida allaqachon ma'lumotlar bazasida bo‘lgan bo‘lsa, saqlashdan oldin biz uni ma'lumotlar bazasidan topib, unga yangi manzilni bog‘lashimiz kerak. Buni qanday qilib Insertcommand-da qilish kerak? Ma'lumotlar kiritish uchun saqlangan protseduralardan foydalanish eng yaxshi variantdir. Protsedurada biz so‘rovni odamni qidirish bilan amalga oshira olamiz va agar bunday odam topilmasa, uni qo‘shing va agar u ma'lumotlar bazasida bo‘lsa, manzillar jadvaliga faqat manzilni qo‘shing va mavjud shaxsga bog‘lab qo‘ying.
1.4.7. Ma'lumotni yo‘q qilish.
DataGridView panjarasida siz qatorni tanlash va tugmachasini bosish orqali ma'lumotlarni o‘chirib tashlashingiz mumkin. Qatorni tanlash uchun qatorning chap tomonidagi ko‘rsatkichlar sichqonchasini bosing. Agar siz ketma-ket bir nechta satrlarni tanlashingiz kerak bo‘lsa, unda birinchi kerakli qatorning chap tomonidagi sichqonchaning chap tugmachasini bosing va oxirgi qatorga torting. Endi tugmachasini bosish bilan barcha tanlangan satrlar o‘chiriladi. Ammo mantiqni amalga oshirmaguningizcha haqiqiy o‘chirish bo‘lmaydi.
Ma'lumotlar bazasidan ma'lumotlarni o‘chirish mantig‘i adapterning De1etecommand xususiyati uchun javobgardir. Ushbu xususiyatda SQL so‘rovini (ko‘pincha bu DELETE so‘rovi), parametrlar va o‘chirish uchun ishlatiladigan ulanishlarni ko‘rsatishingiz kerak. 5.5-bob tomonidan yozilgan dastur kodiga ma'lumotlarni saqlash qobiliyatini qo‘shamiz, ya'ni ma'lumotlarni o‘chirib tashlaymiz:
//bu erda ma'lumotlarni yangilash va qo‘shishni yakunlash
…
// o‘chirish buyrug‘ini to‘ldiring
adapter.DeleteCommand = new OleDbCommand(“DELETE FROM Peoples WHERE idKey = ?”);
// kalit parametrini qo‘shish
adapter.DeleteCommand.Parametrs.Add(“idKey”, OleDbType.Integer, 10, “idKey”);
adapter.DeleteCommand.Connection = connection;
// birdaniga barcha o‘zgarishlarni yangilang
adapter.Update(dataset.Tables[0]);
Ma'lumotlar to‘plami.
Ma'lumki, Ma'lumotlar bazasi ma'lumotlar bazasi mahalliy kompyuterda ma'lumotlarni keshlashning bir turini amalga oshiradi, o‘zgarishlarni keshlashga imkon beradi va adapterlar sinfi tufayli o‘zgarishlarni saqlash uchun qulay imkoniyatlarga ega.Bundan tashqari, ma'lumotlar to‘plami biz gaplashmagan ko‘plab qo‘shimcha afzalliklarga ega, ammo vaqt keldi. ular haqida bilib oling.
Ma'lumotlar to‘plamidan foydalanishdan oldin biz DataReader klassi yordamida so‘rov natijasidagi ma'lumotlarni o‘qiymiz. Ushbu sinf natijalar satrini satrlar bo‘yicha o‘qiydi va biz natijalarning birinchi satridan, tatni oxirgi qatoriga va faqat shu yo‘nalishda harakat qilishimiz mumkin. Natijani DataSet-ga nusxalash orqali biz har qanday yo‘nalishda chiziqlar bo‘ylab harakatlanib, ularni istalgan tartibda o‘qishimiz mumkin.
Va bu erda bir vaqtning o‘zida ikkita jiddiy farq yuzaga keladi: DataReader sinfi tezda ishlaydi, chunki u to‘g‘ridan-to‘g‘ri natijadan ma'lumotlarni qaytaradi. Dataset sinfi DataReader natijasidan ma'lumotlarni o‘qishga va ma'lumotlar to‘plamiga saqlashga oz vaqt sarflaydi. Ikkinchi farq shundaki, DaeaReader sinf ob'ekti faol ulanishni talab qiladi va DaeaSet buni talab qilmaydi.
Quyidagi farq allaqachon DataReader klassi nomidan aniq. Sarlavhadagi Reader so‘zi "o‘quvchi" deb tarjima qilinishi mumkin. Sinf faqat ma'lumotlarni o‘qiydi va o‘zgarishlarni qo‘llab-quvvatlash uchun qo‘shimcha funktsiyalarga ega emas. Agar ma'lumotni o‘qiyotganda o‘zgartirish kerak bo‘lsa, alohida buyruq ob'ekti yaratib, undagi aniq ma'lumotlar bilan yozuvni o‘zgartirish so‘rovini kiritishingiz kerak. Ya'ni, siz nafaqat so‘rovni, balki yangi qadriyatlarni o‘zingiz ham ko‘rsatishingiz kerak, agar ma'lumotlar to‘plami bo‘lsa, ma'lumotlar avtomatik ravishda Ma'lumotlar to‘plamidan olinadi.
1.5.1 Ma'lumotlar to‘plamida ma'lumotlarni saqlash
Bitta ma'lumotlar to‘plami bir vaqtning o‘zida bir nechta ma'lumotlar jadvallarini saqlashi mumkin, ular jadvallar xususiyatidagi DataTableCollection-dadir. To‘plamdagi jadvallar DataTable klassi ob'ektlari sifatida berilgan.
Jadvalning ichida "Natija" ustunlari "ustunlar" xususiyatida "Ma'lumotlar to‘plami" to‘plami sifatida ko‘rsatilgan. Har bir alohida ustun DataColumn sinfining ob'ekti hisoblanadi.
Natija chiziqlari satrlar xususiyatidagi DataRowCollection-da.
Ushbu to‘plamdagi alohida satr DataRow klassi tomonidan taqdim etilgan. Bu kodlash bo‘lgani uchun, uning elementlariga kirish massivda bo‘lgani kabi amalga oshiriladi. Masalan, quyidagi satr kodi 2-chi satrning ob'ektini qaytaradi:
DataRow row = dataset.Tables[0].Rows[2];
Ko‘pgina boshqa kirish texnologiyalarida satrni olish uchun siz Next () / Prior () yoki MoveNext () / MovePrior () kabi maxsus usullardan foydalangan holda bir yozuvdan boshqasiga o‘tishingiz kerak. ADO.NET-da shunga o‘xshash narsa yo‘q. Istalgan vaqtda har qanday satrga indeks bo‘yicha murojaat qilishingiz mumkin.
DataSet-dagi ma'lumotlar tuzilishini yaxshiroq ko‘rish uchun, keling, DataGridView panjarasidan foydalanmasdan ma'lumotlarni o‘qishga harakat qilaylik. Yangi dastur yarating va formada faqat ListView komponentini joylashtiring. View xususiyatida komponentani jadvalga o‘xshash qilish uchun Detai1-larni tanlang.
Forma tuzuvchisida Read () usuliga qo‘ng‘iroq yozing, u serverga ulanadi va ma'lumotlarni o‘qiydi. O‘qish usulining kodi Listing 3.0 ga o‘xshaydi.
|