მოთხოვნების შესრულება ADO.NET კლასების გამოყენებით

DataReader ობიექტი SELECT ბრძანებაში (მოთხოვნაში) მითითებული ცხრილიდან თითო სტრიქონს კითხულობს. წაკითხვის პროცესი შემდეგი მოქმედებებისაგან შედგება:

1. მონაცემების წყაროსთან მიერთება. ამისათვის, ვქმნით შეერთების ობიექტს:
SqlConnection^ myConnection =
gcnew SqlConnection(“server=ROMANI-PC; database=Shekveta; uid=sa; pwd=paroli”);
myConnection ობიექტს ენიჭება შეერთების სტრიქონი, რომელიც ოთხ პარამეტრს შეიცავს: კომპიუტერის სახელი, რომელზეც მუშაობს SQL სერვერი. ამ სახელს მივუთითებთ შეერთების სტრიქონის server პარამეტრში. თუ SQL სერვერი ქსელურ კომპიუტერზეა მოთავსებული, მაშინ უნდა მივუთითოთ კომპიუტერის სახელი. თუ სერვერი ჩვენს (ლოკალურ) კომპიუტერზე მუშაობს, მაშინ შეგვიძლია მივუთითოთ როგორც კომპიუტერის სახელი, ისე localhost სიტყვა, server = localhost. მონაცემთა ბაზის სახელი database პარამეტრში ეთითება, database = Shekveta. მომხმარებლის სახელი შეერთების სტრიქონის uid პარამეტრში ეთითება, uid = sa. პაროლი, მონაცემთა ბაზის მოცემული მომხმარებლისათვის, pwd პარამეტრში ეთითება, pwd=paroli.
2. შეერთების გახსნა:
myConnection->Open();
3. SELECT ბრძანების ფორმირება:
myCommand->CommandText = “SELECT gvari, ganyofileba, asaki, tarigi_dabadebis FROM Personali”;
ამ SELECT ბრძანების შესრულების შედეგად მიღებულ სტრიქონში მოთავსებული იქნება მხოლოდ მითითებული სვეტები. თუ გვინდა ყველა სვეტის მიღება, მაშინ SELECT სიტყვის შემდეგ სვეტების სახელების ნაცვლად უნდა მივუთითოთ ‘*’.

SqlDataReader ტიპის ობიექტის საშუალებით მონაცემების წაკითხვა და ეკრანზე მათი გამოტანა. myCommand ობიექტის ExecuteReader() მეთოდის საშუალებით იქმნება SqlDataReader ტიპის myReader ობიექტი. ExecuteReader() მეთოდი ასრულებს SELECT ბრძანებას და ქმნის ობიექტ-წამკითხველს გენერირებული შედეგების წაკითხვისათვის. ეს ობიექტი-წამკითხველი ენიჭება myReader ობიექტს.
ობიექტი-წამკითხველიდან შედეგების მიღების ერთ-ერთი გზაა myReader ობიექტის Read() მეთოდის გამოყენება. ეს მეთოდი კითხულობს ერთ სტრიქონს, რომელიც მიღებული იყო SELECT ბრძანების შესრულების შედეგად და გასცემს true-ს, თუ კიდევ არის წასაკითხი სტრიქონები, წინააღმდეგ შემთხვევაში – false-ს. კოდის ფრაგმენტს აქვს სახე:
SqlDataReader^ myReader = myCommand->ExecuteReader();
for ( ; myReader->Read(); )
label1->Text += myReader[“gvari”] + ” ” + myReader[“ganyofileba”] + ” ” +
myReader[“asaki”]->ToString() + ” ” + myReader[“tarigi_dabadebis”] + “\n”;
როგორც, კოდის ამ ფრაგმენტიდან ჩანს, ციკლი სრულდება მანამ, სანამ Read() მეთოდი გასცემს true მნიშვნელობას. ყურადღება მივაქციოთ იმას, რომ საჭირო სვეტთან მიმართვისთვის მისი სახელი მითითებულია myReader სახელის მარჯვნივ კვადრარულ ფრჩხილებში, მაგალითად, myReader[“gvari”]. სვეტის სახელის ნაცვლად შეიძლება მისი ინდექსის მითითებაც – myReader[0]. “gvari” სვეტის ინდექსია 0, რადგან ეს პირველი სვეტია SELECT მოთხოვნაში, მეორეა “ganyofileba” სვეტი, ამიტომ მისის ინდექსია 1 და ა.შ.
5. DataReader-სა და შეერთების დახურვა:
myReader->Close();
myConnection->Close();
მოყვანილი პროგრამით ხდება განხილული ეტაპების რეალიზება, კერძოდ SQL სერვერის Shekveta ბაზის Personali ცხრილიდან სტრიქონების წაკითხვა:

// SQL სერვერის Shekveta ბაზის Personali ცხრილიდან სტრიქონების წაკითხვა
{
label1->Text = “”;
// შეერთების ობიექტის შექმნა
SqlConnection^ myConnection =
gcnew SqlConnection(“server=ROMANI-PC; database=Shekveta; uid=sa; pwd=paroli”);
// შეერთების გახსნა
myConnection->Open();
// ამ შეერთებისთვის ბრძანების შექმნა
SqlCommand^ myCommand = myConnection->CreateCommand();
// SQL მოთხოვნის განსაზღვრა ამ ბრძანებისთვის
myCommand->CommandText = “SELECT gvari, ganyofileba, asaki, tarigi_dabadebis FROM Personali”;
// მოცემული ბრძანებისთვის DataReader-ის შესრულება
SqlDataReader^ myReader = myCommand->ExecuteReader();
// კითხვა მანამ, სანამ არის წასაკითხი სტრიქონები
for ( ; myReader->Read(); )
label1->Text += myReader[“gvari”] + ” ” + myReader[“ganyofileba”] + ” ” +
myReader[“asaki”]->ToString() + ” ” + myReader[“tarigi_dabadebis”] + “\n”;
// მკითხველის დახურვა
myReader->Close();
// შეერთების დახურვა
myConnection->Close();

}
Access მონაცემთა ბაზიდან სტრიქონების წასაკითხად, ჩვენს პროგრამას დასაწყისში ჯერ დავუმატოთ
using System::Data::OleDb;
დირექტივა, შემდეგ კი 16.19 პროგრამაშSqlConnection, SqlCommand და SqlDataReader ობიექტები შევცვალოთ OleDbConnection, OleDbCommand და OleDbDataReader ობიექტებით. უნდა შევცვალოთ, აგრეთვე შეერთების სტრიქონი, რომელსაც ექნება შემდეგი სახე:
“Provider=Microsoft.Jet.OLEDB.4.0;
DataSource=C:\\Users\\Romani\\Documents\\ROMANI\\Access\\db5.mdb”
შეერთების სტრიქონში Provider კონსტრუქცია განსაზღვრავს OLE DB მიმწოდებელს Access მონაცემთა ბაზისთვის, DataSource კონსტრუქცია კი განსაზღვრავს მონაცემთა ბაზის კონკრეტულ ფაილს, რომელთანაც უნდა შესრულდეს მიმართვა.
მოცემული პროგრამით სრულდება Access მონაცემთა ბაზიდან, კერძოდ db5.mdb მონაცემთა ბაზის Personali ცხრილიდან სტრიქონების წაკითხვა:
{

// Access სისტემის Shekveta ბაზის Personali ცხრილიდან სტრიქონების წაკითხვა
label1->Text = “”;
// შეერთების ობიექტის შექმნ
OleDbConnection^ myConnection = gcnew OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\Romani\\Documents\\ROMANI\\Access\\db5.mdb”);
// შეერთების გახსნა
myConnection->Open();
// ბრძანების შექმნა ამ შეერთებისთვის
OleDbCommand^ myCommand = myConnection->CreateCommand();
// SQL მოთხოვნის განსაზღვრა ამ ბრძანებისთვის
myCommand->CommandText = “SELECT gvari, ganyofileba, asaki, tarigi_dabadebis FROM Personali”;
// მოცემული ბრძანებისთვის DataReader-ის შესრულება
OleDbDataReader^ myReader = myCommand->ExecuteReader();
// სანამ არის წასაკითხი სტრიქონები
for ( ; myReader->Read(); )
label1->Text += myReader[“gvari”] + ” ” + myReader[“ganyofileba”] + ” ” +
myReader[“asaki”]->ToString() + ” ” + myReader[“tarigi_dabadebis”] + “\n”;
// მკითხველის დახურვა
myReader->Close();
// შეერთების დახურვა
myConnection->Close();
}

ავტ: რომან სამხარაძე

3Shares