التعامل مع قواعد البيانات SQL Server بواسطة لغة السي شارب

محتويات المقال:
التعامل مع قواعد البيانات SQL Server بواسطة لغة السي شارب
سنشرح اليوم درس مهم , عن كيفية التعامل مع قواعد البيانات SQL Server بواسطة لغة السي شارب وتنفيذ الاستعلامات وادخال بيانات وتحديث وحذف البيانات بطريقة مختصرة ومبسطة جدا ، طبعا استخدم اي اصدار من اصدارات SQL SERVER واي اصدار من فيجوال استديو ويجب ان يكون الاصدار من 2005 ومافوق للكل ، انشئ جدول بسيط باسم USERS يتكون من الحقول الاتية (ID,PWD,UserType) , ونوع البيانات اجعله varchar(50) الان سنبدأ بالتطبيق انشئ مشروع جديد بلغة السي شارب وليكن نوعه Windows Form Application اختار اي اسم للمشروع واضغط ok . الان سنقوم بانشاء كلاس خاص للتعامل مع قاعدة البيانات ونعطيه اسم DBHelper ، نضمن المكتبات الاتية في ملف الكلاس وهذه المكتبات تحتوي على الكلاسات الخاصة بالتعامل مع قواعد البيانات

using System.Data.SqlClient;
using System.Data;

اولا: تكوين الاتصال والارتباط بسرفر قاعدة البيانات

بعد انشاء الكائن (object) sqlconn من الكلاس الخاص بتكوين الاتصال SqlConnection انشئ المشيد(Constructor) للكلاس وعرف كائن الاتصال الذي مشيده يستقبل نص الاتصال كالتالي :

public class DBHelper
 {
     SqlConnection  sqlconn;
     public DBHelper()
     {
        sqlconn =  new SqlConnection(@"server=.\HABIB;Database=Product_DB;integrated security=true;");
     }
 }
طبعا في نص الاتصال الذي يستقبل البيانات التالية:
server نسندله عنوان الجهاز متبوع ب (/) ثم اسم السيرفر طبعا عنوان السيرفر (عنوان الجهاز المثبت عليه نظام SQL SERVER) ممكن يكون ip او اسم جهازك او (.) التي تعني الجهاز المحلي localhost
Database اسم قاعدة البيانات
integrated security نسند القيمة true اذا كنا نستخدم windows authentication او false اذا اردنا عمل مستخدم وكلمة سر للسيرفر نضيف userID , password كالتالي :
sqlconn =  new SqlConnection(@"server=.\HABIB;Database=Product_DB;integrated security=false;userID=habib; password=12345;");

انشاء دالة فتح الاتصال مع سيرفر قاعدة البيانات 

 public void open()
        {
            if (sqlconn.State == ConnectionState.Closed)
            {
                sqlconn.Open();
            }
        }

انشاء دالة اغلاق الاتصال مع قاعدة البيانات 


public void close()
        {
            if (sqlconn.State == ConnectionState.Open)
            {
                sqlconn.Close();
            }
        }
انشاء دالة تقوم بتنفيذ كل من ادخال البيانات وتحديثها وحذفها كالتالي:

//Method insert to table and update and delete
        public int ExececuteNonQuery(string query)
        {
        SqlCommand cmd = new SqlCommand(query, sqlconn); 
        open();  // فتح الاتصال
        int done =cmd.ExecuteNonQuery(); 
        close(); // اغلاق الاتصال
        return done;
        }

انشاء دالة تقوم بتنفيذ اوامر select وترجع الناتج في جدول من خلال الكلاس DataTable 


//Method Execute Select command
        public DataTable ExecSelect(string query)
        {
            SqlCommand cmd = new SqlCommand(query, sqlconn);
            open();        // فتح الاتصال
            SqlDataReader sdr = cmd.ExecuteReader();  
            DataTable dt = new DataTable();  
            dt.Load(sdr); // قراءة البيانات الى كائن الجدول .
   close();  // اغلاق الاتصال 
            return dt; // ارجاع الجدول.
        }
الان بعد الانتهاء من انشاء كلاس التعامل مع قاعدة البيانات الذي يدعى Data Access Layer يمكن الان استدعاء الكلاس و تجربة مثال لكل من الادخال والتعديل والحذف واسترجاع البيانات طبعا انشئ اي حدث للتنفيذ في الفورم وضع احدى الاكواد التالية داخلة لتنفيذها مثلا هنا استخدمنا حدث تحميل الفورم Form_load بالضغظ على الفورم مرتين يفتح الحدث مباشرة كالتالي:
 private void Form1_Load(object sender, EventArgs e)
        {
           اكتب الكود هنا        
        }

تنفيذ ادخال البيانات الى الجدول :

 DBHelper db = new DBHelper(); // تعريف كائن من الكلاس لتنفيذ الاوامر عليه
          string sql_insert_cmd = "INSERT INTO USERS (ID,PWD,UserType) VALUES ('HABIB','12345','user');"; //نص الاستعلام
           if (db.ExececuteNonQuery(sql_insert_cmd) != 0)
           {
               MessageBox.Show("inserted data"); // عند نجاح التنفيذ يعرض الرسالة
           }

تنفيذ تحديث البيانات (تعديلها) 

DBHelper db = new DBHelper();
  string sql_update = "UPDATE USERS SET PWD = '10000' WHERE ID ='admin';";
              if (db.ExececuteNonQuery(sql_update) != 0)
              {
                  MessageBox.Show("updated data");
              }

تنفيذ حذف البيانات من الجدول 

DBHelper db = new DBHelper();
  string sql_delete = "DELETE FROM USERS  WHERE ID ='HABIB';";
              if (db.ExececuteNonQuery(sql_delete) != 0)
              {
                  MessageBox.Show("Deleted data");
              }

تنفيذ استرجاع البيانات من الجدول وعرضها على DataGridView

 اذهب الى ToolBox , واضف الاداة DataGridView الى الفورم ، كما هو ظاهر على صورة الدرس .
DBHelper db = new DBHelper();
  string selectdata = "SELECT * FROM USERS";
       //  انشاء وتعريف كائن من كلاس الجدول DataTable 
            DataTable DT=new DataTable(); 
          // استقبال البيانات من دالة تنفيذ استعلام استرجاع البيانات الى كائن الجدول.   
            DT = db.ExecSelect(selectdata); 
     //  اضافة الجدول لل DataGridView لعرضها على الفورم.
            dataGridView1.DataSource = DT; 
الى هنا انتهينا من الدرس واتمنى يكون اعجبكم ، واي استفسار ضعوه في تعليق .للمزيد من الدروس تابعونا على صفحة الموقع