Net platformasi bilan tanishish clr, cts va cls


Ma'lumotlar bazalari bilan ishlash(Postgre SQL)


Download 428.24 Kb.
bet12/18
Sana07.05.2023
Hajmi428.24 Kb.
#1437478
1   ...   8   9   10   11   12   13   14   15   ...   18
Bog'liq
C# методичка

Ma'lumotlar bazalari bilan ishlash(Postgre SQL)
Yaqinda men PostreSQL asosida ishlaydigan C# dasturini ishlab chiqishni boshladim, uning ma'lumotlarini baham ko'rishga shoshildim. Maqolada men Postgresql-ga C# - da yozilgan dasturdan ulanish uchun nima kerakligini va u bilan misollar yordamida qanday ishlashni tasvirlab beraman.
Bizning holatlarimizda PostgreSQL ma'lumotlar bazalari bilan ishlash uchun biz Npgsql — dan foydalanamiz-Postgresql uchun.Net Data Provider-ni yuklab oling, Npgsql-ni qo'shing.dll-ni loyihangizga kiriting va kerakli kutubxonalarni kompilyatsiya qilingan loyiha bilan papkaga ko'chiring (ishlashi uchun): Npgsql.dll va Mono.Security.dll.
Ma'lumotlar bazasiga ulanishdan boshlaylik:
string conn_param = "Qator ulanishlar ga ma'lumotlar bazasi"; //Masalan: "Server=127.0.0.1;Port=5432;User Id=postgres;Password=mypass;Database=mybase;"
string sql = "ma'lumotlar bazasiga so'rov matni";
NpgsqlConnection conn = new NpgsqlConnection(MainParams.ConnectionString);
NpgsqlCommand comm = new NpgsqlCommand(sql, conn);
conn.Open(); //Ochish ulanish.
result = comm.ExecuteScalar().ToString(); //Bajarish bizning jamoa.
conn.Yopish ); / / ulanishni yoping.
Ko'rib turganingizdek, hech qanday murakkab narsa yo'q, hamma narsa har doimgidek.
comm.ExecuteScalar () - qiymatni qaytaradi.
comm.ExecuteNonQuery () - ma'lumotlarni o'zgartirish uchun so'rovni bajaradi.
Ma'lumotlar qatoridan namuna olish misoli:
NpgsqlConnection con = new NpgsqlConnection("qator ulanishlar");
NpgsqlCommand com = new NpgsqlCommand("select * from my_table order by \"NAME\"", con);
con.Open();
NpgsqlDataReader reader;
reader = com.ExecuteReader();

while (reader.Read())


{
try
{
string result = reader.GetString(1); / / ikkinchi ustundan qiymatni oling! Birinchisi (0)!
}
catch { }
}
con.Close();

Migratsiya


Yuqorida ma'lumotlar bazasini yaratish uchun ma'lumotlar bazasi usuli ishlatilgan.EnsureCreated. Endi ma'lumotlar konteksti sinfini o'zgartiring-database qo'ng'irog'ini olib tashlang.EnsureCreated va nomini o'zgartiring ma'lumotlar bazasi:
public class ApplicationContext : DbContext{
public DbSet Users { get; set; } = null!;
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseNpgsql("Host=localhost;Port=5432;Database=usersdb2;Username=postgres;Password=123456789");}}

Ulanish ga mavjud ma'lumotlar bazasi ma'lumotlar


Uchun ulanishlar ga mavjud ma'lumotlar bazasi ma'lumotlar ichida PostgreSQL zarur ichida oyna Package Manager Console bajarish jamoa Scaffold-DbContext, qaysi uzatiladi qator ulanishlar va nomi provayder, keyin bor Npgsql.EntityFrameworkCore.PostgreSQL (uchun ijro bu jamoalar shuningdek zarur paket Microsoft.EntityFrameworkCore.Tools). Birinchidan, scaffold-DbContext buyrug'i va ulanish satri kiritiladi:


Scaffold-DbContext "Host=localhost;Port=5432;Database=usersdb;Username=postgres;Password=123456789"


Keyin konsolda Provider so'zi paydo bo'ladi, shundan so'ng siz provayder nomini kiritishingiz kerak bo'ladi, ya'ni


Npgsql.EntityFrameworkCore.PostgreSQL
ADO.NET
ADO.NET -bu.net Framework dasturchilari uchun ma'lumotlarga kirish xizmatlarini taqdim etadigan sinflar to'plami. ADO.NET tarqatilgan ma'lumotlar almashish dasturlarini yaratish uchun boy komponentlar to'plamini taqdim etadi. Bu.net Framework-ning ajralmas qismi bo'lib, relyatsion ma'lumotlar, XML va dastur ma'lumotlariga kirishni ta'minlaydi. ADO.NET ilovalar, vositalar, tillar yoki Internet-brauzerlar tomonidan ishlatiladigan ma'lumotlar bazalari va o'rta darajadagi biznes ob'ektlarining oldingi mijozlarini yaratishni o'z ichiga olgan turli xil rivojlanish ehtiyojlarini qo'llab-quvvatlaydi.
ADO.NET SQL Server va XML kabi ma'lumotlar manbalariga, shuningdek OLE DB va ODBC orqali taqdim etilgan ma'lumotlar manbalariga izchil kirishni ta'minlaydi. Ma'lumot almashish uchun iste'molchi ilovalari foydalanishi mumkin ADO.NET ushbu ma'lumotlar manbalariga ulanish va ulardagi ma'lumotlarni olish, qayta ishlash va yangilash uchun.
ADO.NET ma'lumotlarga kirish va ma'lumotlarni qayta ishlashni alohida yoki tandemda ishlatilishi mumkin bo'lgan alohida qismlarga ajratadi. ADO.NET ma'lumotlar bazasiga ulanish, buyruqlarni bajarish va natijalarni olish uchun.net Framework ma'lumotlar provayderlarini o'z ichiga oladi. Ushbu natijalar to'g'ridan-to'g'ri qayta ishlanadi yoki ob'ektga joylashtiriladi ADO.NET DataSet foydalanuvchiga hech qanday tartibda taqdim etilmaydi, yoki bir nechta manbalardan olingan ma'lumotlar bilan birlashtiriladi yoki darajalar o'rtasida uzatiladi. Ob'ekt Datasetshuningdek, ma'lumotlar provayderidan mustaqil ravishda foydalanish mumkin .Ilova uchun mahalliy yoki XML-dan olingan ma'lumotlarni boshqarish uchun NET Framework.
Sinflar ADO.NET tizimda joylashgan.Data.dll va tizimdagi XML sinflari bilan birlashtirilgan.Xml.dll. Ma'lumotlar bazasiga ulanadigan, undan ma'lumotlarni oladigan va keyin ushbu ma'lumotlarni konsol oynasida ko'rsatadigan namunaviy kodga qarang . kod namunalari ostida ADO.NET .
ADO.NET ActiveX (ADO) ma'lumotlar ob'ektlari tomonidan mahalliy komponentli ob'ekt modellari (COM) ishlab chiquvchilariga taqdim etilgan funktsional imkoniyatlarga o'xshash boshqariladigan kodni yozadigan ishlab chiquvchilarga funktsiyalarni taqdim etadi. Sizga foydalanishni tavsiya etamiz ADO.NET .NET ilovalaringizdagi ma'lumotlarga kirish uchun ADO emas.
ADO.NET .net Framework doirasida ma'lumotlarga kirishning eng to'g'ridan-to'g'ri usulini taqdim etadi. Ilovalarga asosiy saqlash modeli bilan emas, balki kontseptual model bilan ishlashga imkon beradigan yuqori darajadagi abstraktsiya uchun qarang ADO.NET Entity Framework .
Maxfiylik bayonoti: tizim.Data.dll, System.Data.Design.dll, System.Data.OracleClient.dll, System.Data.SqlXml.dll, System.Data.Linq.dll, System.Data.SqlServerCe.dll va tizim tuzilmalari.Data.DataSetExtensions.dll Foydalanuvchining shaxsiy ma'lumotlarini va oddiy ma'lumotlarni farqlamaydi. Ushbu tuzilmalar foydalanuvchilarning shaxsiy ma'lumotlarini to'plamaydi, saqlamaydi yoki uzatmaydi. Biroq, uchinchi tomon dasturlari ushbu tuzilmalar yordamida Foydalanuvchining shaxsiy ma'lumotlarini to'plashi, saqlashi yoki uzatishi mumkin.
.net Framework ma'lumotlarini qoldiruvchilar-bu ma'lumotlarni boshqarish va faqat o'qish uchun to'g'ridan-to'g'ri ma'lumotlarga tezkor kirish uchun maxsus ishlab chiqilgan komponentlar. Ulanish ob'ekti ma'lumotlar manbasiga ulanishni ta'minlaydi. Buyruq ob'ekti ma'lumotlarni qaytarish, ma'lumotlarni o'zgartirish, saqlangan protseduralarni bajarish va parametrlar to'g'risida ma'lumot yuborish yoki qabul qilish uchun ma'lumotlar bazasi buyruqlariga kirishni ta'minlaydi. DataReader ma'lumotlar manbasidan yuqori samarali ma'lumotlar oqimini ta'minlaydi . Va nihoyat, Dataadapter DataSet obyekti va ma'lumotlar manbai o'rtasidagi ko'prikni ta'minlaydi. Dataadapter ob'ektlaritomonidan ishlatiladi Buyruqma'lumotlar manbasida SQL buyruqlarini bajarish uchun, ikkalasini ham yuklash uchun Datasetma'lumotlar va ma'lumotlarga kiritilgan o'zgarishlarni muvofiqlashtirish Datasetma'lumotlar manbasining uchinchi qismi.
Bugungi kunda ko'plab biznes ishlab chiquvchilari ikkita (yoki undan ko'p) dasturlash tilidan foydalanishlari kerak: biznes mantig'i va taqdimot darajalari uchun yuqori darajadagi til (masalan, Visual C# yoki Visual Basic) va ma'lumotlar bazasi bilan ishlash uchun so'rovlar tili (masalan, Transact). -SQL). Bu ishlab chiquvchidan samarali bo'lishi uchun bir nechta tillarni bilishini talab qiladi va rivojlanish muhitida tillarning nomuvofiqligini keltirib chiqaradi. Masalan, ma'lumotlar bazasi so'rovini bajarish uchun ma'lumotlarga kirish API-dan foydalanadigan dastur so'rovni tirnoq belgilaridan foydalangan holda satr literali sifatida belgilaydi. Ushbu so'rov satri kompilyator tomonidan o'qilishi mumkin emas va u noto'g'ri sintaksis yoki u murojaat qilgan ustunlar yoki satrlarning haqiqiy mavjudligi kabi xatolar uchun tekshirilmaydi. So'rov parametrlari turlarini tekshirish yoki Intellisenseqo'llab-quvvatlash.
Til bilan birlashtirilgan so'rov (LINQ) ishlab chiquvchilarga alohida so'rov tilidan foydalanmasdan o'zlarining dastur kodlaridagi to'plamlar asosida so'rovlarni shakllantirishga imkon beradi. Xotiradagi ma'lumotlar tuzilmalari, XML hujjatlari, SQL ma'lumotlar bazalari va DataSet kabi turli xil ro'yxatga olingan ma'lumotlar manbalariga (ya'ni IEnumerable interfeysini amalga oshiradigan ma'lumotlar manbasiga) LINQ so'rovlarini yozishingiz mumkin.ob'ektlar. Ushbu sanab o'tilgan ma'lumotlar manbalari turli yo'llar bilan amalga oshirilgan bo'lsa-da, ularning barchasi bir xil sintaksis va til konstruktsiyalarini taqdim etadi. So'rovlar dasturlash tilining o'zida tuzilishi mumkinligi sababli, kompilyator tomonidan tushunilishi yoki tekshirilishi mumkin bo'lmagan satr harflari sifatida o'rnatilgan boshqa so'rovlar tilidan foydalanishingiz shart emas. So'rovlarni dasturlash tiliga integratsiya qilish, shuningdek, Visual Studio dasturchilariga kompilyatsiya paytida turlar va sintaksisni tekshirishni va IntelliSense-ni ta'minlash orqali yanada samarali ishlashga imkon beradi. Ushbu xususiyatlar so'rovlarni disk raskadrovka va xatolarni tuzatishga bo'lgan ehtiyojni kamaytiradi.
Ma'lumotlarni SQL jadvallaridan xotiradagi ob'ektlarga o'tkazish ko'pincha zerikarli va xatolarga moyil. LINQ to DataSet va LINQ to SQL tomonidan amalga oshirilgan LINQ provayderi manba ma'lumotlarini IEnumerable asosida ob'ektlar to'plamiga o'zgartiradi . Dasturchi har doim ma'lumotlarni IEnumerable to'plami sifatida , so'ralganda ham, yangilashda ham ko'rib chiqadi. To'liq taqdim etiladi Intellisenseushbu to'plamlarga so'rovlar yozish uchun qo'llab-quvvatlash.
Mavjud uchta alohida texnologiya ADO.NET Language-Integrated Query (LINQ): LINQ to DataSet, LINQ to SQL va LINQ to Entities. LINQ to DataSet beradi ko'proq boylar, optimallashtirilgan so'rovlar ga DataSet , va LINQ to SQL ruxsat beradi to'g'ridan-to'g'ri talab qilish sxemalar asoslar ma'lumotlar SQL Server, va LINQ to Entities ruxsat beradi talab qilish model ma'lumotlar Entity.
Quyidagi diagrammada texnologiya qanday ekanligi haqida umumiy ma'lumot berilgan ADO.NET LINQ yuqori darajadagi dasturlash tillari va LINQ-ni qo'llab-quvvatlaydigan ma'lumotlar manbalari bilan bog'liq.
DataSet - bu mustaqil dasturlash modelining asosiy elementi ADO.NET, va bu keng qo'llaniladi. LINQ to DataSet ishlab chiquvchilarga boshqa ko'plab ma'lumotlar manbalari uchun mavjud bo'lgan bir xil so'rovlarni shakllantirish mexanizmidan foydalangan holda DataSet-da kengroq so'rov imkoniyatlarini yaratishga imkon beradi. Qo'shimcha ma'lumot olish uchun qarang . LINQ-dan DataSet-ga.
LINQ to SQL-bu kontseptual modelga mos kelishni talab qilmaydigan ishlab chiquvchilar uchun foydali vosita. LINQ-dan SQL - ga foydalanib, LINQ dasturlash modelidan to'g'ridan-to'g'ri mavjud ma'lumotlar bazasi sxemasining yuqori qismida foydalanishingiz mumkin. LINQ to SQL ishlab chiquvchilarga ma'lumotlarni ifodalovchi.net Framework sinflarini yaratishga imkon beradi. Kontseptual ma'lumotlar modeliga mos kelish o'rniga, ushbu yaratilgan sinflar to'g'ridan-to'g'ri ma'lumotlar bazasi jadvallari, ko'rinishlar, saqlangan protseduralar va foydalanuvchi tomonidan belgilangan funktsiyalar bilan taqqoslanadi.
LINQ to SQL yordamida ishlab chiquvchilar XML kabi boshqa ma'lumotlar manbalaridan tashqari, xotiradagi to'plamlar va DataSet bilan bir xil LINQ dasturlash shablonidan foydalangan holda to'g'ridan-to'g'ri saqlash sxemasi uchun kod yozishlari mumkin. Qo'shimcha ma'lumot olish uchun qarang . LINQ-dan SQL-ga.
Hozirgi kunda aksariyat dasturlar relyatsion ma'lumotlar bazalari ustiga yozilgan. Bir nuqtada, ushbu ilovalar relyatsion shaklda taqdim etilgan ma'lumotlar bilan o'zaro aloqada bo'lishlari kerak. Ma'lumotlar bazasi sxemalari har doim ham dasturlarni yaratish uchun ideal emas va kontseptual dastur modellari mantiqiy ma'lumotlar bazasi modellari bilan bir xil emas. Ob'ekt ma'lumotlari modeli-bu ma'lum bir domen ma'lumotlarini modellashtirish uchun ishlatilishi mumkin bo'lgan kontseptual ma'lumotlar modeli, shuning uchun ilovalar ma'lumotlar bilan ob'ekt sifatida o'zaro ta'sir qilishi mumkin. Qo'shimcha ma'lumot olish uchun ADO-ga qarang.NET Entity Framework .
Entity Data Model yordamida relyatsion ma'lumotlar .NET muhitidagi ob'ektlar sifatida taqdim etiladi.bu ob'ekt qatlamini LINQ-ni qo'llab-quvvatlash uchun ideal maqsadga aylantiradi va ishlab chiquvchilarga biznes mantig'ini yaratish uchun ishlatiladigan til yordamida ma'lumotlar bazasi so'rovlarini shakllantirishga imkon beradi. Ushbu imkoniyat "Linq to Entities" nomi bilan tanilgan. Qo'shimcha ma'lumot olish uchun qarang . Linq to Entit ostida
Tizim nomlari maydonidan DataSet klassi.Ma'lumotlar ma'lumotlar manbasidan olingan xotiradagi ma'lumotlarni saqlash yoki keshlashni anglatadi. DataSet ob'ekti DataTable turi bilan ifodalangan jadvallarni o'z ichiga oladi. DataTable jadvali, o'z navbatida, ustunlar va qatorlardan iborat. Har bir ustun DataColumn ob'ektini, qator esa datarow ob'ektini ifodalaydi.
Ma'lumotlar manbaidan ma'lumotlar bilan DataSet ob'ektini to'ldirish uchun tizim klassi ishlatiladi.Data.Common.DataAdapter (tizim interfeysini amalga oshiradi.Data.IDataAdapter), aniqrog'i uning ma'lum bir DBMS bilan ishlashga mo'ljallangan dasturlari.
Dataadapter ob'ekti uchun DataSet ob'ektini to'ldirish uchun Fill () usuli chaqiriladi, unga to'ldirilgan DataSet ob'ekti parametr sifatida uzatiladi.
Fill () usuli, agar ulanish ochiq bo'lmasa, DataAdapter ob'ektining ulanish xususiyatida saqlanadigan ulanish ob'ektini bevosita ochadi. Agar Fill () usuli ulanishni ochsa, ma'lumotlarni olgandan so'ng, Fill usuli ushbu ulanishni yopadi.
Agar Fill () usulini chaqirishdan oldin ulanish ilgari ochilgan bo'lsa, masalan, Open()/OpenAsync () usuli yordamida, Fill usuli shunchaki ushbu ulanishdan foydalanadi. ies .



Download 428.24 Kb.

Do'stlaringiz bilan baham:
1   ...   8   9   10   11   12   13   14   15   ...   18




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling