تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
للمبتدئين في السي شارب _ كيفية الاتصال بقاعدة البيانات والتعامل معها
#11
(11-10-15, 05:59 PM)أبو عمر كتب : السلام عليكم ورحمة الله وبرحمة الله وبركاته
لا جديد في هذا المجال انما هي محاولة لتبسيط الامر أكثر مماهو بسيط أساساً في التعامل مع قواعد البيانات باستخدام ADO.NET
من المؤكد قد سبقني اخواني بشرح هذه المسألة مرات ومرات لكن من باب التذكير لا أكثر
سنستخدم سي شارب نعم ذاك البعبع الذي كنت لا اطيق منظر اي محرر كود مليء بالاقواس والفاصلة المنقوطة وجملة اللوب الغريبة الشكل
وسنرى بالتطبيق العملي كيف أنه اسهل بكثير من الفيجوال بيسك نعم نعم انا كنت مثلك أكره السي شارب ولكن الفيجوال بيسك لا تكمل معك المشوار اذا كان طموحك
اكبر من إنشاء برامج للويندوز فقط فالعالم تتسع افاقه كل يوم ونحن اصحاب البيسك مكانك سر !!!
تعال معي

انشيء قاعدة بيانات ليكن اسمها مثلا
xx.mdb

وننشيء بداخلها جدول بسيط عبارة عن ثلاثة حقول ونسميهم كما في الصورة ادناه


الان اغلق قاعدة البيانات هذه وتوجه نح الفيجوال استوديو واتبع ما في الصورة الاتية


بعد ذلك بارك الله فيك اضف للفورم DataGirdview فقط
سأتجاوز عرض الصورة هنا وسنضيف كلاس للمشروع كالتالي

ثم نكمل الخطوة الاخيرة

الان اذهب للكلاس الذي انشأناه وانسخ كامل الكلاس من هنا 
PHP كود :
// سنحتاج للمكتبتين التاليتين 
using System.Data;
using System.Data.OleDb;
    // اسم الكلاس Connection
    class Connection
    
{
        // تغير اسم قاعدة البيانات حسب ما لديك
        string db ".\\xx.mdb";
        // عندما يكون للقاعدة كلمة مرور
        string pass "***";
        // اذا كانت قاعدة البيانات 2007 فأعلى 
        string pv "Microsoft.Ace.OLEDB.12.0";
        // اذا كانت البيانات أقديم من 2007
        string pv1 "Microsoft.Jet.OLEDB.4.0";
        //تعريف المعاملات للاتصال باقاعدة والجدول
     // الاتصال بالقاعدة
        public OleDbConnection Cn = new OleDbConnection();
        // للاتصال بالجدول والعمليات عليه
        public OleDbCommand Cmd = new OleDbCommand();
        // نعرف الداتا تيبل لاستخدمها في عرض البيانات مثلا في جريد فيو
        public DataTable dt = new DataTable();
        // الان نكتب كود الاتصال والتهيئة لاجراء العمليات 
        // عرض
        //بحث
        //اضافة
        // حذف
        // تعديل
         // كل تلك العمليات تمر في الجملة SQL
         //مهمة الكود أدناة تنفيذ ما تأمره به في الجملة
         // في الفورم سنتعرف على العمليات
            public void Rec(string SQL)
        {
            Cn.ResetState();
        //هنا سأتصل بقاعدة بيانات 203 
            Cn.ConnectionString = ("Provider="+pv1+";Data Source=" db+"; user id=admin;jet oledb:database password="+pass);    
        
// نفتح الاتصال بقاعدة البيانات  
            Cn.Open();
        // نجهز معامل الاتصال بالجداول بالشكل التالي
            Cmd.Connection Cn;
        Cmd.CommandText = (SQL);
             
    

نغلق الكلاس الان ونتوجه للفورم ودبل كلك عليه لنجد امامنا محرر الكود نمسح جميع ما به ونلصق الكود التالي باعتباره Form1
PHP كود :
using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace 
WindowsFormsApplication3
{
    public partial class Form1 Form
    
{
        // نبدأ باستدعاء الكلاس الذي اعددنا مسبقا بالشكل الاتي
        Connection con = new Connection();
       // بهذا الشكل سيصبح الكلاس كأي اداة لها وظائف وخصائص
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object senderEventArgs e)
        {
            // هنا سنقوم بعملية استعلام عادية جداً انظر للجملة بين الاقواس
            con.Rec("select * from Users");
            // في الكود التالي نقوم بملء الداتا تيبل بنتيجة الجملة السابقة
            con.dt.Load(con.Cmd.ExecuteReader());
            // أخيرا سنعرض النتائج في الجريد فيو
            dataGridView1.DataSource con.dt;
              // نغلق الاتصال فلم نعد بحاجة إليه
 
           con.Cn.Close();
 
           // ننهي كذلك معامل الاتصال من الذاكرة 
 
           con.Cmd.Dispose();
 
           // شغل المشروع وشاهد
        }

        private void backgroundWorker1_DoWork(object senderDoWorkEventArgs e)
        {

        }
    }


الان نذهب لقاعدة البيانات التي انشأناها وننسخها الى مجلد المشروع في مجلد Debug الموجود داخل المجلد Bin
نشغل المشروع ونتأكد من الاتصال وعرض الجدول الفارغ من البيانات على اداة عرض البيانات DataGirdView


إن شاء الله اذا كان فيه تفاعل ولو بسيط سيصبح هذا المشروع شيء ذا قيمة فقد بدأنا بعداد فقط جدول مستخدمين
وجداول المستخدمين هي نواة بنية اي مشروع كبير ادارة محل مبيعات
ادارة طلاب
ادارة مكتبات الخ...
آخذ نفس ونكمل طبعا شرح كل سطر من الكود موجود معاه
بالمناسبة لا يهم اصدار الفيجوال استوديو ايّاً كان
فاصل ونواصل !

عدنا والعود أحمد بحمد الله

الان دبل كلك على البتن ونكتب كود الاضافة بالشكل التالي
PHP كود :
 //كود الاصافة في الجدول تحت حد البتن كلك
 
       private void button1_Click(object senderEventArgs e)
 
       {
 
           //نستدعي الاجراء من الكلاس ونكتب جملة الاضافة بالشكل التالي
 
           con.Rec("Insert into Users (Username,Pass) Values (@Username,@Pass)");
 
           // نضيف الباراميترات الى الحقول
 
           con.Cmd.Parameters.AddWithValue("@Username"textBox1.Text);
 
           con.Cmd.Parameters.AddWithValue("@Pass"textBox2.Text);
 
           con.Cmd.ExecuteNonQuery();
 
           // نغلق الاتصال فلم نعد بحاجة إليه
 
           con.Cn.Close();
 
           // ننهي كذلك معامل الاتصال من الذاكرة 
 
           con.Cmd.Dispose();
 
           //بعد عملية الاضافة نحن بحاجة لعرض البيانات في الجريد فيو فنوقم باستدعاء حدث الفورم لود بالشكل التالي
 
   con.dt.Clear();
 
           Form1_Load(sendere);
 
       
شغل المشروع واختبر كود الاضافة


الان بعد ان استطعنا الاضافة  نعمل على الحذف والحذف سيكون بطريقة مختلفة نوعا ما عن الطرق التقليدية بوضع بتن و و و
سنقوم بعمل كود الحذف في الحدث دبل كلك للجريد فيو كالتالي
PHP كود :
     // الان للحذف سنقوم بدبل كلك على السف في الجريد
 
       //وتظهر لنا رسالة بالموافق على الحذف من عدمه
 
       private void dataGridView1_DoubleClick(object senderEventArgs e)
 
       {
 
           try
            
{
 
               // لايجاد قيمة الخلية الاولى التي تمثل قيمة حقل الاندكس في الجدول 
 
               int indx int.Parse(dataGridView1.SelectedRows[0].Cells[0].Value.ToString());
 
               string name dataGridView1.SelectedRows[0].Cells[1].Value.ToString();

 
               //انشاء رسالة التنبيه
 
               DialogResult  result MessageBox.Show(" هل ترغب بحذف السجل رقم "+indx.ToString() +" " name,"تنبيه",MessageBoxButtons.YesNo);
 
              // الشرط التالي اذا كان الاختيار للبتن لا سنغلي الاجراء بالكامل
 
               if (result == DialogResult.No) {
 
                   return;
 
               }
 
               // في حال ال    غط على الموافقة سنقوم بحذف السجل كالتاالي
 
               con.Rec("Delete * from Users where id=" indx);
 
               con.Cmd.ExecuteNonQuery();
 
               con.Cn.Close();
 
               con.Cmd.Dispose();
 
               // نقرأ البيانات بعد الحذف من الجدول
 
               con.dt.Clear();
 
               Form1_Load(sendere);

 
           }
 
           catch { }
 
  
        

نشغل المشروع ونتابع

وعليكم السلام ورحمة الله وبركاته
شكر جزيلا
باركك الله فيك وفي عملك
السلام عليكم

كل الشّكر و التقدير و العرفان بالجميل و الامتنان لكل من ساعدني.
واسال لله ان يوسع له  في رزقة - ويزيدة علما وحكمه - ويكتب اجره مضاعفا - ويسعده دنيا واخرة - ويرحمه ويرحم والديه
الرد
تم الشكر بواسطة:
#12
احسنت اخي
بارك الله فيك
مشكور على المجهود الطيب
الله يبارك في علمك أخي 
والف شكر
الرد
تم الشكر بواسطة: elgokr , elgokr


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Big Grin [C#.NET] دروس فيديو لتعليم سي شارب من البداية حتى الإحتراف باحطاب سوفت 9 7,995 16-10-18, 11:33 PM
آخر رد: nashaat
  دورة متقدمة متمحورة حول كيفية إنشاء برنامج محاسبي متقدم C# & SQL Server & DevExpress thevirus 2 1,575 20-07-18, 02:21 AM
آخر رد: mryan
  [C#.NET] موقع دورة سي شارب مجانية الشاكي لله 6 3,802 17-11-17, 08:51 PM
آخر رد: قاسم
  دورة قواعد البيانات SQLite ولغة سي شارب المبرمج الطموح88 2 2,610 05-11-17, 11:34 PM
آخر رد: قاسم
Thumbs Up [سؤال] مشكلة في الكوكيز سي شارب ahmed b skafi 0 861 26-08-16, 12:58 AM
آخر رد: ahmed b skafi
  المتغيرات في السي شارب أبو عمر 0 1,920 27-09-15, 02:12 PM
آخر رد: أبو عمر
  Your first line of C# code اكتب اول كود في السي شارب أبو عمر 0 2,284 23-09-15, 05:28 AM
آخر رد: أبو عمر
  دورة قواعد البيانات MySQLولغة سي شارب المبرمج الطموح88 1 1,964 01-08-15, 08:15 AM
آخر رد: ابو ابراهيم

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم