DataAdapter

როგრც ცნობილია, მონაცემემთა ბაზასთან სამუშათ გამოიყენება SqlConnection,  SqlCommand  კლასები. მარტივი ამოცანის შესასრულებლათ საკმარისია მოცემული კლასებიდან პიდაპირ მივმართოდ მონაცემთა ბაზას და შევასრულოთ გარკვეული მოქმედება. ასევე შეიძლება მონაცემთა ბაზის გადმოტანა ADO.NET -ის ობიექტურ მოდელში და ჩაწერა DataSet-ში, მაგრამ ასეთ შემთხვევაში საკმაოდ მოუხერხებელია მოცემული კლასებით პირდაპირ ბაზაზე მიმართვა, თან თუ იმასაც გავითვალისწინებთ, რომ სინქრონიზაცია მონაცემთა ბაზასა და DataSet-ს შორის ქმნის დამატებით სირთულეებს. ყოველივე აქედან გამომდინარე სასურველი იქნება თუ გამოვიყენებთ რაიმე შუალედურ კალსს რომელიც ადაფტერის როლს შეასრულებს ბაზასა და DataSet-ს შორის

ასეთი დანიშნულება აქვს DataAdapter კლასს, მოცემულ ვიდეო გაკვეთილში მოკლეთ განხილულია DataAdapter –ის მოქმედების პრინციპი

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace ADOnetDataAdapter {
  class Program {
    static void Main(string[] args) {
      //using ბლოკის გამოყენების შემდეგ აღარ არის
      //საჭირო sqlCon.Close()ფუნქციის გამოცხადება
      using(SqlConnection sqlCon =
        new SqlConnection(@"server= .\sqlexpress; database=Animal; integrated security = true;")) {
        //ადაფტერს პიდაპირ გადაეცემა SqlCommand
        //კლასის ობიექტი, თავისი კომანდ სტრინგით
        SqlDataAdapter adapter = new SqlDataAdapter(new SqlCommand("SELECT * FROM Insects", sqlCon));
        DataTable table = new DataTable();
        //SqlCommandBuilder კლასი sql ბრძანებების
        //გენერირებისთვის იყენებს SqlDataAdapter კლასის
        //ობიექტს, SqlCommandBuilder იბიექტის
        //გამოცხადება საჭიროა მხოლოდ ერთხელ,
        //მისი ობიექტის შექმნის დროს
        adapter.DeleteCommand = new SqlCommand("delete from insects where id=7", sqlCon);
        SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
        sqlCon.Open();
        adapter.Fill(table);// Fill(table) ფუნქცია
        //table-ს ავსებს მონაცემთა ბაზიდან მიღებული მნიშვნელობებით

        table.Rows[0][1] = "ant12";//როგორც ჩანს table-ს ველები
        //შეადგენს ერთ დაკბილულ მასივს
        table.Rows.RemoveAt(3);
        foreach(DataRow row in table.Rows) {
          Console.WriteLine("{0}, {1}, {2}", row[0], row[1], row[2]);
        }
        adapter.Update(table);//Update(table) ფუნქცია
        //გამოუსადეგარი იქნებოდა SqlCommandBuilder-ის
        //ობიექტ builder-ის გარეშე, ხოლო მონაცემთა
        //ბაზის table-ზე მოქმედებები ასე მარტივად სრულდება
        //რაც შეეხება ბაზიდან მონაცემების წაშლას ის ასე არ
        //ხდება, და არ არის რეკომენდირებული, ამის
        //ამგივრად შეგვიძლია, დავამატოთ ახალი ბულის
        //ტიპის ველი და ამ ველში მიუთითოდ წაშლილია თუ არა 
        //ხოლო SqlCommandBuilder-ში აისახება მოცემული მდგომარეობა
        //მაგრამ უბრალოთ წაშლისთვის შეგვიძლია ესეც გავაკეთოთ
        adapter.DeleteCommand.ExecuteNonQuery();    
        Console.ReadKey();
      }
    }
  }
}


* This source code was highlighted with Source Code Highlighter.

 

Link

Overview of ADO.NET

Advertisements
This entry was posted in ADO.NET. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s