Lestning 2.2 ma'lumotlar bazasida o‘zgarishlarni saqlash uchun kod

Lestning 2.2 ma'lumotlar bazasida o‘zgarishlarni saqlash uchun kod
Private void saveButton_Click(objeckt sender, EventArgs e)
{
OleDbConnection connection = CreateConnection();
OleDbDataAdapter adapter =
new OleDbDataAdapter(“SELECT * FROM Peoples”, connection);
// buyruq ob'ektini yaratish
adapter.UpdateCommand = new OleDbCommand(“UPDATE Peoples SET Фамилия = ? , Имя = ?, Пол = ?, “ + “WHERE idKey = ?”);
// ma'lumotlar ulanish parametrlarini yaratish
adapter.UpdateCommand.Parameters.Add(“Фамилия”,OleDbType.VarChar,50,” Фамилия”);
adapter.UpdateCommand.Parameters.Add(“Имя”,OleDbType.VarChar,50,” Имя”);
adapter.UpdateCommand.Parameters.Add(“Пол”,OleDbType.VarChar,50,” Пол”);
adapter.UpdateCommand.Parameters.Add(“idKey”,OleDbType.VarChar,50,” idKey”);
// ulanish ob'ektini belgilang
adapter.UpdateCommand.Connection = connection;
// ma'lumotlarni yangilash qo‘ng‘irog‘i
adapter.Update(dataset.Tables[0]);
}
UpdateConunand xususiyatida biz OleDbCommand sinfining namunasini saqlaymiz. Qavs ichidagi ob'ektni konstruktorga yaratishda biz faqat SQL yangilash so‘rovini bildiramiz. Qolganlarning hammasi aniq belgilanadi.
Endi yangilash so‘rovida biz ko‘rsatgan parametrlarni savol belgilari shaklida ma'lumotlar to‘plamidan uzatiladigan parametrlar bilan bog‘lashimiz kerak. Buning uchun barcha parametrlarni UpdateCommand buyrug‘ining Parametrlar to‘plamiga qo‘shing. Biz allaqachon parametrlarni qo‘shdik va bu erda ularning ma'nosi bir xil: ularni SQL so‘rovida tegishli savollar e'lon qilingan ketma-ketlikda qo‘shish kerak. To‘plamga parametr qo‘shish uchun Add () usulidan foydalaning. Ushbu usulning bir nechta ortiqcha variantlari mavjud va men bu erda to‘rtta parametrni o‘z ichiga oladigan maksimal variantni tanladim:
Parametr nomi;
Ma'lumotlar turi OleDbType ro‘yxati sifatida;
Hajmi (ustunlar);
Ustun nomi;
Parametrlar to‘plamini to‘ldirib, buyruq bilan foydalaniladigan ma'lumotlar bazasiga ulanish ob'ektini ko‘rsataman. Endi siz o‘zgarishlarni saqlashingiz mumkin. Buning uchun biz adapterning Update () usulini chaqiramiz, unga jadvalni yoki ma'lumotlar to‘plamini o‘tkazishimiz kerak. Bizning misolimizda men null jadvalini o‘tkazaman, chunki u faqat panjara ichida ko‘rsatiladi va foydalanuvchi tomonidan faqat uning ma'lumotlari o‘zgartirilishi mumkin.
Ilovani ishga tushiring, sanadan boshqa qiymatlarni o‘zgartirishga harakat qiling va saqlash tugmachasini bosing. O‘zgarishlarni ma'lumotlar bazasida saqlash kerak. Bunga ishonch hosil qilish uchun siz boshqa dasturdan ma'lumotlar bazasiga ulanishingiz va jadvalga qarashingiz yoki dasturimizni qaytadan boshlashimiz kerak.
Nega sanani o‘zgartira olmaysiz? Siz uni o‘zgartirishingiz mumkin, ammo UpdateCommand buyrug‘i tomonidan bajarilgan so‘rovda sana saqlanmaydi, shuning uchun bunday o‘zgarishlar ma'lumotlar bazasiga o‘tkazilmaydi. So‘rov ma'lumotlar bazasida faqat kerakli va kerak bo‘lganda saqlanishi mumkin.
Ammo agar siz dasturni ishga tushirsangiz va tejash tugmasini bosmasdan birdaniga bir nechta satrlarni o‘zgartirsangiz nima bo‘ladi? Bunday holda, ma'lumotlar to‘plami o‘z keshida o‘zgarishlarni to‘playdi va tugmachani bosganda barcha o‘zgartirilgan satrlar ma'lumotlar bazasiga o‘tkaziladi.
1.4.5. Bog‘langan jadvallar
Ma'lumotni o‘zgartirish so‘rovlarini boshqarish bizda ma'lumotlarni saqlash jarayonida cheksiz imkoniyatlar yaratadi. Aytaylik, bizda ikkita jadval bor. Bittasida odamlar haqida ma'lumotlar mavjud. va ikkinchi jadvalda ularning manzillari keltirilgan. Bu mantiqiy vazifadir, chunki odamning yashash joyining manzili o‘zgarishi mumkin va uning ma'lumotlarini alohida jadvalga saqlash orqali biz odamning harakat tarixini,
Ma'lumot olish uchun so‘rov quyidagicha ko‘rinadi
SELECT *
FROM Peoples p , Address a
WHERE idKey = idPeopleKey
Bizning forma manzillarni aks ettirishi uchun siz ma'lumot o‘qish adapteridagi taroq satrini o‘zgartirishingiz kerak:
OleDbDataAdapter adapter = new OleDbAdapter(“SELECT * FROM Peoples p , Address a WHERE idKey = idPeopleKey”,connection);
Siz misolni ishga tushirishingiz mumkin va manzil maydonchasi panjara ichida ekanligiga ishonch hosil qilishingiz mumkin. Kerakli ma'lumotlar namunasini olish uchun bizga har qanday murakkab imo-ishoralar kerak emas edi. Endi ma'lumotlardagi o‘zgarishlarni qanday saqlash kerak? Ikki jadvalda ma'lumotlarni birdaniga saqlashi mumkin bo‘lgan UPDATE so‘rovi yo‘q. Bizni UPDATE ikkita so‘rovni yozishga va ularni bitta buyruqqa kiritishga kim to‘sqinlik qilmoqda? O‘zgarishlarni qabul qiladigan va ularni jadvallarga joylashtiradigan protsedurani yozishga bizni kim xalaqit bermoqda? Hech kim aralasha olmaydi. UPDATEni to‘g‘ridan-to‘g‘ri bajarish variantini ko‘rib chiqamiz.
Bir vaqtning o‘zida bitta buyruqda ikkita so‘rovni bajara olishimiz uchun serverlarni vergul bilan ajratishimiz kerak. Bizning holatda, u quyidagicha bo‘ladi:
adapter.UpdateCommand = new OleDbCommand( “UPDATE Peoples SET Фамилия = ? , Имя = ?, Пол = ?, +”WHERE idKey = ?; “ + “UPDATE Address SET Адрес = ? + “WHERE idAddressKey = ?”);
Endi jamoada ikkita yangilash so‘rovi bor. Birinchisi Peoples jadvalini yangilaydi, ikkinchisi esa manzil manzilini yangilaydi. Misol ishlashi uchun, manzillar jadvalini yangilash uchun so‘rov bilan bog‘liq bo‘lgan parametrlar to‘plamiga ikkita parametr qo‘shishni unutmasligingiz kerak:
adapter.UpdateCommand.Parametres.Add(“Адрес”, OleDbType.VarChar, 50, “Адрес ”);
adapter.UpdateCommand.Parametres.Add(“idAddressKey”, OleDbType.Integer, 50, “idAddressKey”);
Endi bitta dovonda birdaniga ikkita jadvalni yangilashimiz mumkin.
1.4.6. Ma'lumotlar qo‘shish.
DataGridView panjara juda qulaydir, chunki u nafaqat ma'lumotlarni namoyish qilish, balki yangi qatorlar yaratishga imkon beradi. Buning uchun panjara ma'lumotlar to‘plamining eng oxirida bitta bo‘sh qatorni ko‘rsatadi (Lestning 2.1). Bu ma'lumotlar to‘plamidagi bo‘sh satr emas, balki ixtisoslashgan virtual satr, deydi chapdagi yulduzcha. Agar siz ushbu yozuvga yangi yozuvning ma'lumotlarini kiritsangiz, u holda bu ma'lumotlar qatori DataSet-ga qo‘shiladi va pastki qismda yana bir yozuvni qo‘shish uchun bo‘sh chiziq yana paydo bo‘ladi.
Butun soniya davomida (5-rejada) biz allaqachon ma'lumotni o‘zgartirish va uni ma'lumotlar bazasida saqlashga imkon beradigan kichik misolni yozdik. Ammo bu misol qo‘shilgan yozuvlarni ma'lumotlar bazasida saqlashi mumkinmi? Yo‘q, chunki o‘zgartirishlar saqlanadigan UpdateCammand xususiyati faqat mavjud ma'lumotlarni yangilash uchun javobgardir. U biron bir yangilik qo‘sha olmaydi.
Ma'lumotlar bazasida kiritilgan satrlarni saqlash uchun siz InsertCommand xususiyatini amalga oshirishingiz kerak. Keling, bizning misolimizga yangi satrlarni saqlash qobiliyatini qo‘shamiz. Yangilangan saqlash usulining kodi Listing 2.3-da ko‘rsatilgan.
|