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

السلام عليكم ورحمه الله وبركاته 



لحذف البيانات في الجدول نستخدم جمله Delete وتكتب الجمله بهذاالشكل : 

DELETE FROM table_name
WHERE column_name = some_value

كما تعودنا نذهب للمثال لنري الكود بشكل عملي 
وستلاحظ ان الكود سيختلف اختلافات بسيطه فقط عن كود التعديل والاضافه 

       'Command وضعنا جمله الاستعلام في متغير نصي ثم اسنادها الي كائن الامر 
        sql = "Delete from employees  Where Emp_code =  @Emp_code "
        Cmd.CommandText = sql
        ' وضع القيمه الخاصه  بالبارميتر
        Cmd.Parameters.Clear()
        Cmd.Parameters.AddWithValue("@Emp_code", TextBox1.Text)
        If Cn.State = ConnectionState.Closed Then Cn.Open()
        'تنفيذ الاستعلام
        Cmd.ExecuteNonQuery()
        ' غلق الاتصال 
        Cn.Close()
       MessageBox.Show("تم الحذف بنجاح", "حذف  ", MessageBoxButtons.OK, MessageBoxIcon.Information)

تذكر  :
  • لابد من وجود شرط في جمله الحذف حتي لا يتم حذف بيانات الجدول بالكامل .
  • لا تنسي ان تحذف البيانات من البارميتر قبل استعماله حتي تتجنب الاخطاء .
  • لاحظ اننا استخدمنا ExecuteNonQuery  ايضا لان الاستعلام لا يرجع لنا ببيانات فقط سيقوم بتنفيذ التعديل دون الرجوع ببيانات .


رابط تحميل المثال هــنــا



تعديل البيانات في الجدول | UPDATE

السلام عليكم ورحمه الله وبركاته 

UPDATE
لتعديل البيانات في الجدول نستخدم جمله UPDATE وتكتب الجمله بهذاالشكل :


UPDATE table_name
SET column_name1 = new_value ,
column_name2 = new_value,.... 
WHERE column_name = some_value 

 يمكنك من خلال هذه  الجمله تعديل عمود او اكثر فقط بكتابه اسم العمود في الجمله column_name1 = new_value
ولكن لابد من وجود شرط في جمله التعديل حتي لا يتم تعديل بيانات الجدول بالكامل 

نكمل علي مثالنا لنري كيفيه كتابه كود التعديل :

'  Command وضعنا جمله التعديل  في متغير نصي ثم اسنادها الي كائن الامر 
        sql = "UPDATE employees set Emp_name = @Emp_name ,Emp_phone=@Emp_phone Where Emp_code =  @Emp_code "

        Cmd.CommandText = sql
        ' وضع القيم الخاصه بكل بارميتر
        Cmd.Parameters.Clear()
        Cmd.Parameters.AddWithValue("@Emp_name", TextBox2.Text)
        Cmd.Parameters.AddWithValue("@Emp_phone", TextBox3.Text)
        Cmd.Parameters.AddWithValue("@Emp_code ", TextBox1.Text)
        'التأكد من حاله الاتصال
        If Cn.State = ConnectionState.Closed Then Cn.Open()
        'تنفيذ الاستعلام
        Cmd.ExecuteNonQuery()
        ' غلق الاتصال 
        Cn.Close()
       
        MessageBox.Show("تم التعديل بنجاح", "تعديل ", MessageBoxButtons.OK, MessageBoxIcon.Information)


ملاحظات هامه :
  • لابد من وجود شرط في جمله التعديل حتي لا يتم تعديل بيانات الجدول بالكامل .
  • انت غير ملزم ان يكون ترتيب الاعمده في جمله الاستعلام بنفس ترتيب الجدول.
  • لا تنسي ان تحذف البيانات من البارميتر قبل استعماله حتي تتجنب الاخطاء .
  • حاول ان يكون ترتيب البارميترات في الكود بنفس ترتيبها في جمله التعديل .
  • لاحظ اننا استخدمنا ExecuteNonQuery  لان الاستعلام لا يرجع لنا ببيانات فقط سيقوم بتنفيذ التعديل دون الرجوع ببيانات .
وبهذا يكون اتضح لنا الفرق بين :
(ExecuteNonQuery و ExecuteScalar  و ExecuteReader )
 
رابط تحميل المثال هــنــا




اضافه البيانات في الجدول | Insert into


السلام عليكم ورحمه الله وبركاته


Insert into


سنتعلم في هذا المثال :

  • الترقيم التلقائي
  • الاضافه في الجدول عن طريق البارميترات 
  • مسح محتويات جميع  التيكست بوكس علي الفورم
  • نقل بيانات السطر المحدد في الداتا جريد الي التيكست  بوكس
  • تنسيق العرض في الداتا جريد

لا ضافه البيانات في الجدول نستخدم Insert into وتكتب الجمله بهذاالشكل :

لاضافه صف كامل بالجدول تكون بالشكل التالي :


INSERT INTO table_name VALUES  (value1, value2,....)

ويمكنك ايضا تحديد الحقول المطلوب إضافتها فقط وتكون كالتالى :

INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,....)


شرح اهم الاكواد في المثال  :



  • كود الترقيم التلقائي 
Cmd.CommandText = "Select Max(Emp_code) from employees "

 If Cn.State = ConnectionState.Closed Then Cn.Open()

 Dim Max As Integer = Val(Cmd.ExecuteScalar.ToString) + Val("1")

من خلال max في جمله الاستعلام نحصل علي اكبر رقم في حقل الكود ،، ثم نقوم بتنفيذ الاستعلام ونضيف عليه واحد 
وهكذا نكون حصلنا علي ترقيم تلقائي 
لاحظ اننا استخدمنا ExecuteScalar   لان ناتج الاستعلام خليه واحده كما ذكرنا في الدرس السابق

  • كود الاضافه
'  Command وضعنا جمله الاستعلام في متغير نصي ثم اسنادها الي كائن الامر 

        sql = "Insert into employees  values (@Emp_code ,@Emp_name,@Emp_phone)"

        Cmd.CommandText = sql

        ' وضع القيم الخاصه بكل بارميتر
        Cmd.Parameters.Clear()
        Cmd.Parameters.AddWithValue("@Emp_code ", Max)
        Cmd.Parameters.AddWithValue("@Emp_name", TextBox2.Text)
        Cmd.Parameters.AddWithValue("@Emp_phone", TextBox3.Text)

        'تنفيذ الاستعلام
        Cmd.ExecuteNonQuery()

        ' غلق الاتصال 
        Cn.Close()

لاحظ اننا استخدمنا ExecuteNonQuery  لان الاستعلام لا يرجع لنا ببيانات فقط سيقوم بتنفيذ الاضافه 
  • مسح محتويات جميع  التيكست بوكس علي الفورم
        For Each ctrl As Control In Me.Controls
            If TypeOf ctrl Is TextBox Then
                CType(ctrl, TextBox).Clear()
            End If
        Next 


  • نقل بيانات السطر المحدد في الداتا جريد الي التيكست  بوكس
 في حدث CellClick  للداتا جريد نكتب هذا الكود 
TextBox1.Text = DataGridView1.Rows(e.RowIndex).Cells(0).Value.ToString

TextBox2.Text = DataGridView1.Rows(e.RowIndex).Cells(1).Value.ToString

TextBox3.Text = DataGridView1.Rows(e.RowIndex).Cells(2).Value.ToString


 لا حظ اننا قمنا بتحويل محتوي خليه الداتا جريد الي نصي من خلال ToString
 وقمنا بالحصول علي رقم السطر المحدد في الداتا جريد من خلال e.RowIndex   

 ان شاء الله يكون الدرس واضح ومفهوم 
اذا واجهك اي صعوبه في الكود لا تتردد في السؤال 

رابط تحميل المثال هــنــا




عرض البيانات في | DataGridView | الوضع المتصل


السلام عليكم ورحمه الله وبركاته



اليوم بمشيئه الله سنستعرض كيفيه استدعاء بيانات من قاعده البيانات وعرضها في DataGridView
كنا في الدرس السابق تكلمنا عن كائن الاتصال Connection

واليوم ان شاء الله سيكون كلامنا عن الكائن الثاني وهو  Command



      كائن الامر Command
هو الكائن المسؤل عن تنفيذ جمل الاستعلام Sql  مثل (select – insert – delete - update)
 أو  تنفيذ الإجراءات المخزنة StoredProcedure .
وله ثلاث حالات :

   ExecuteReader : تستخدم عند رجوع الاستعلام بسجل او اكثر  مثل الاستعلام عن بيانات
 ExecuteNonQuery :تستخدم عند تنفيذ استعلام لا يرجع بقيم مثل insert – delete - update 
ExecuteScalar : تستخدم عند رجوع الاستعلام بخليه واحده مثل الاجمالي او اكبر قيمه  وهكذا ،،،



  كائن DataTable
من خلال هذا الكائن يتم التعامل مع الجداول الموجودة في قاعدة البيانات وهو عبارة عن جدول يحتوي على مجموعة من الصفوف والأعمدة  .




وكما يقال بالمثال يتضح المقال ... 
الخطوه الاولي (انشاء قاعده البيانات)
 سنقوم  بأنشاء قاعده بيانات جديده ونسميها  بالاسم  db
ثم نقوم بأنشاء جدول بسيط مكون من ثلاث اعمده 

Emp_code      Number   
Emp_name            Text     
Emp_phone          Text  

ثم نسمي الجدول  بالاسم employees


ننتقل الي الخطوه الثانيه ( تصميم الفورم )
افتح برنامج الفيجوال Microsoft Visual Studio 
وقم بأنشاء مشروع جديد 
اضف اداه  DataGridView  علي الفورم 


الخطوه الثالثه والاخيره (كتابه الاكواد)


نقوم بأستدعاء مكتبات الدوت نت  كما تعلمنا في الدرس السابق  بكتابه هذا الكود في منطقه التصريحات العامه

Imports System.Data.OleDb  


ثم نكتب الكود التالي في حدث  Form1_Load


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'الاتصال بقاعده البيانات 
        Dim Cn As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=  " & Application.StartupPath & "\db.mdb ")
        'اسناد جمله الاستعلام ومصدر الاتصال  الي كائن الامر
        Dim Cmd As New OleDbCommand("SELECT * FROM employees ", Cn)
        Cn.Open() ' فتح الاتصال 
        'انشاء متغير من نوع  DataTable 
        Dim dt As New DataTable
        ' تحميل السجلات العائده من الاستعلام في الداتا تيبل
        dt.Load(Cmd.ExecuteReader)
        ' ربط مصدر البيانات للدات جريد
        DataGridView1.DataSource = dt

        Cn.Close() ' غلق الاتصال 
       
    End Sub




الي هنا انتهينا من عرض  البيانات .. ولكن دعنا نقوم بتنسيق العرض قليلا في  اداه DataGridView  

قم بكتابه الاجراء التالي 

      Private Sub grid()


        ' كود التحكم في عرض الخلايا 
        DataGridView1.Columns(2).Width = 150
        DataGridView1.Columns(0).Width = 150

        ' الكود التالي لتوسيط الأعمدة
        DataGridView1.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        DataGridView1.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        DataGridView1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter



        'تحديد السطر بالكامل وليس خليه واحده
        DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

        ' تغير اسامي العناوين للهيدر
        DataGridView1.Columns(0).HeaderText = "الكود"
        DataGridView1.Columns(1).HeaderText = "الاسم"
        DataGridView1.Columns(2).HeaderText = "التليفون"
        ' توسيط الهيدر 
        DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

        ' كود جعل ثاني خليه  'الاسم' تأخذ باقي عرض الداتا جريد
        DataGridView1.Columns(1).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
        ' تلوين سطر وسطر 
        DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGray

    End Sub


ولاستدعاء هذا الاجراء قم بكتابه هذا الكود في اخر سطر في الحدث Form1_Load
Call grid()

الي هنا انتهينا من هذا الدرس  ،،، لتحميل المثال من  هـــنـا