Ma'lumotlarni qo'shish
DataGridview juda qulay, chunki u nafaqat ma'lumotlarni ko'rsatish, balki yangi qatorlar
yaratish imkonini beradi. Buning uchun ma'lumotlar to'plamining eng oxirida to'r bitta bo'sh qatorni
ko'rsatadi (16.6-rasm). Bu ma'lumotlar to'plamidagi bo'sh satr emas, balki ixtisoslashgan virtual
satr, deydi chapdagi yulduzcha. Agar siz ushbu qatorga yangi yozuvning ma'lumotlarini kiritsangiz,
u holda ma'lumotlar to'plamiga ushbu ma'lumotlardan iborat qator qo'shiladi va boshqa yozuvni
qo'shish uchun pastki qismida yana bo'sh qator paydo bo'ladi.
Sek. davomida. 16.12 da biz allaqachon ma'lumotlarni o'zgartirish va ma'lumotlar bazasiga
saqlash imkonini beruvchi kichik misolni yozdik. Ushbu misol qo'shilgan yozuvlarni ma'lumotlar
bazasida saqlay oladimi? Yo'q, chunki o'zgarishlar saqlanadigan UpdateCommand xususiyati faqat
mavjud ma'lumotlarni yangilash uchun javobgardir. U yangi hech narsa qo'sha olmaydi.
Ma'lumotlar bazasiga kiritilgan qatorlarni saqlash uchun insertcommand xususiyatini amalga
oshirish kerak. Keling, misolimizga yangi satrlarni saqlash qobiliyatini qo'shamiz. Yangilangan
saqlash usuli kodi 16.8 ro'yxatda ko'rsatilgan.
// Bu yerda UpdateCommand xususiyatini to'ldirish ketadi
// ma'lumotlarni qo'shish
adapter.Insertcommand = new SqlCommand(
"INSERT INTO Peoples (Familiyasi, ismi, tug'ilgan_sanasi, jinsi) "
+
"VALUES (?, ?, ?, ?) " ) ;
adapter. Insertcommand. Parameters. Add (" Familiyasi ", SqlType.
VarChar, 50z " Familiyasi ");
adapter.Insertcommand.Parameters.Add("ismi ", SqlType.VarChar, 50,
" ismi ");
adapter.Insertcommand.Parameters.Add("tug'ilgan_sanasi
",
SqlType.Date, О, " tug'ilgan_sanasi ");
adapter.Insertcommand.Parameters.Add("jinsi ", SqlType.VarChar,
50/ " jinsi ");
adapter.Insertcommand.Connection = connection;
adapter.Update(dataset.Tables[0]);
Joyni tejash uchun UpdateCommand xususiyatini to'ldiradigan kodni o'tkazib yubordim.
Qo'shilgan qatorlarni saqlash uchun insertcommand xususiyatiga SQL INSERT buyrug'ini yozing,
bu esa ma'lumotlar bazasiga yozuv qo'shadi. Shundan so'ng biz parametrlar to'plamini to'ldiramiz.
Bunday holda, qo'shish so'rovida men barcha maydonlarni, shu jumladan tug'ilgan sanani
to'ldirishga qaror qildim, shuning uchun biz parametrlar to'plamiga tug'ilgan sanani ham qo'shamiz.
Insertcommand buyrug'i ulanish uchun ishlatiladigan ulanish ob'ektini aniq ko'rsatishi kerak.
Va oxirida biz adapterning update1 () usulini chaqiramiz, bu barcha o'zgarishlarni saqlaydi. Bu
safar u nafaqat mavjud ma'lumotlarga kiritilgan o'zgarishlarni, balki DataSetga qo'shilgan barcha
qatorlarni saqlaydi. Shuning uchun, har bir buyruqni alohida to'ldirgandan keyin emas, balki
yangilash va kiritish buyruqlarini ko'rsatgandan so'ng, update1 () usulini faqat bir marta chaqirish
kifoya.
Yozuvlarni bitta jadvalda saqlash muammo emas. Alohida jadvalda saqlangan manzil bilan
bo'lgani kabi, bir nechta jadvallar bo'ylab ma'lumotlarni tarqatish kerak bo'lganda muammolar
paydo bo'ladi. Biz ilgari yozgan misolda biz shaxsning ma'lumotlarini bir jadvalda, manzilini esa
boshqa jadvalda saqlashimiz kerak edi. Agar biror kishi allaqachon ma'lumotlar bazasida boshqa
manzilda bo'lgan bo'lsa, saqlashdan oldin biz ma'lumotlar bazasidan odamni topib, unga yangi
manzilni bog'lashimiz kerak. Buni insertcommand-da qanday qilish kerak? Eng yaxshi variant
ma'lumotlarni kiritish uchun saqlangan protseduralardan foydalanishdir. Protsedurada biz odamni
qidirish bilan so'rovni bajarishimiz mumkin va agar bunday shaxs topilmasa, uni qo'shing va agar
shaxs ma'lumotlar bazasida bo'lsa, u holda faqat manzilni manzillar jadvaliga qo'shing va uni
bog'lang. mavjud odamga.
|