تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[مشروع] اضافة وعرض اى نوع من الملفات داخل قاعدة بيانات Access
#1
السلام عليكم ورحمة الله وبركاته

اليوم اضع بين ايديكم مثال مبسط 
مع الشرح بداخل الكود فى السورس
عن كيفية تخزين الملفات داخل قاعدة البيانات 
و اعادة استدعاء الملف من قاعدة البيانات وفتحه

صورة وجهة البرنامج


صورة تصميم الجدول المستخدم بالسورس المرفق


مرفق بالمرفقات السورس + قاعدة البيانات Access + برنامج للمعنة والاختبار + الصور المستخدمة بالموضوع
فقط قم ملف قاعدة البيانات المرفقة بجاب البرنامج عند اتمام التشغيل
ويمكنك بعد ذلك التعامل فى السورس مباشراً بعد ادراج قاعدة البيانات بجانب البرنامج

السورس المرفق 2015
اتمنى ان يكون الكود مبسط لدا الجميع
كما ان يكون الوضع سهل وبسيط لطريقة الاستخدام

وبالنهاية الكود كاملاً خاص السورس المرفق
كود :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
using System.IO;
using System.Diagnostics;

namespace Store_And_Retrieve_Files
{
   public partial class Form1 : Form
   {
       // قم بتغيير كود الاتصال بقاعدة البيانات فى السطر التالى
       OleDbConnection con = new OleDbConnection(@"provider=microsoft.ace.oledb.12.0;data source=Database.accdb");
       OleDbCommand cmd;
       OleDbDataAdapter Da;
       DataTable dt = new DataTable();

       public Form1()
       {
           InitializeComponent();
           // تحميل البيانات بالداتا جريد
           GetLoadData();
       }

       private void button1_Click(object sender, EventArgs e)
       {
           // اختيار الملف المطلوب استخدامه للحفظ بقاعدة البيانات
           OpenFileDialog OFD = new OpenFileDialog();
           DialogResult dlgRes = OFD.ShowDialog();
           if (dlgRes != DialogResult.Cancel)
           {
               // مسار الملف كاملاً
               textBox2.Text = OFD.FileName;
               // التحقق باذا البيانات مدخلة لاتمام تفعيل زر الحفظ
               if (string.IsNullOrWhiteSpace(textBox2.Text) || string.IsNullOrWhiteSpace(textBox1.Text))
               {
                   button3.Enabled = false;
               }
               else
               {
                   button3.Enabled = true;
               }
           }
       }

       private void textBox1_TextChanged(object sender, EventArgs e)
       {
           // التحقق باذا البيانات مدخلة لاتمام تفعيل زر الحفظ
           if (string.IsNullOrWhiteSpace(textBox2.Text) || string.IsNullOrWhiteSpace(textBox1.Text))
           {
               button3.Enabled = false;
           }
           else
           {
               button3.Enabled = true;
           }
       }

       private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
       {
           // تفعيل الكتابة فقط لاسم الملف
           e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Space);
       }

       private void button3_Click(object sender, EventArgs e)
       {
           // تحويل الملف الى Byte
           FileStream FFS = new FileStream(textBox2.Text, FileMode.Open);
           BinaryReader FBR = new BinaryReader(FFS);
           int ii = unchecked((int)FFS.Length);
           byte[] FileCon = FBR.ReadBytes(ii);
           FFS.Close();
           FBR.Close();

           // اضافة البيانات بقاعدة البيانات
           cmd = new OleDbCommand("Insert into TB_File (FileName,FileExt,Attachment) Values (@FileName,@FileExt,@Attachment)", con);
           con.Open();
           cmd.Parameters.Add(new OleDbParameter("@FileName", SqlDbType.NVarChar)).Value = textBox1.Text;
           cmd.Parameters.Add(new OleDbParameter("@FileExt", SqlDbType.NVarChar)).Value = Path.GetExtension(textBox2.Text);
           cmd.Parameters.Add(new OleDbParameter("@Attachment", SqlDbType.VarBinary)).Value = FileCon;
           cmd.ExecuteNonQuery();
           con.Close();
           MessageBox.Show("OK!");
           // تحميل البيانات بالداتا جريد
           GetLoadData();
           // تفريغ كلاً من اداء النصوص
           textBox1.Clear();
           textBox2.Clear();
       }

       // تعريف متغيير من نوع رقم ليتم تسجيل به رقم الصف عند تحديده من الداتا جريد
       private int DgId { get; set; }
       // جلب البيانات وتعبئتها فى الداتا جريد
       private void GetLoadData()
       {
           // تفريغ DT
           dt.Clear();
           // جلب البيانات من قاعدة البيانات
           cmd = new OleDbCommand("select * from TB_File", con);
           Da = new OleDbDataAdapter(cmd);
           Da.Fill(dt);
           // تعبئة الداتا جريد بالبيانات التى تم تعبئتها
           dataGridView1.DataSource = dt;
           // تسمية الاعمدة فى الداتا جريد
           dataGridView1.Columns[0].HeaderText = "ID";
           dataGridView1.Columns[1].HeaderText = "File Name";
           dataGridView1.Columns[2].HeaderText = "File Extension";
           // اخفاء العمود الاخير تجنباً من ظهور رسالة اخطاء
           // خصوصاً اذا كان الملف المرفق ليس صورة
           dataGridView1.Columns[3].Visible = false;
       }
       private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
       {
           // اعطاء المتغيير المعرف من نوع رقم قيمة رقم الصف
           DgId = e.RowIndex;
       }

       private void button2_Click(object sender, EventArgs e)
       {
           // التحقق اذا كان الداتا جريد ممتلئة ام فارغة لتنفيذ كود فتح الملف
           if (dataGridView1.RowCount > 0)
           {
               // تحويل الكود المسجل بقاعدة البيانات الى ملف
               byte[] ff = (byte[])dt.Rows[DgId][3];
               var FPath = dt.Rows[DgId][1].ToString() + dt.Rows[DgId][2].ToString();
               FileStream FFS = new FileStream(FPath, FileMode.Create, FileAccess.Write);
               FFS.Write(ff, 0, ff.Length);
               FFS.Close();
               // تنفيذ فتح الملف بعد انشائه بالكود السابق
               Process.Start(FPath);
           }
           else
           {
               // رسالة تنبيه بان الداتا جريد فارغة
               MessageBox.Show("Please Add Any Data So You Can Open File Selected.");
           }
       }
   }
}

مواضيع ذات صلة:
[مشروع][C#] اضافة وعرض اى نوع من الملفات داخل قاعدة بيانات SQL.
- [مشروع][C#] اضافة وعرض اى نوع من الملفات داخل قاعدة بيانات Access.
[مشروع][VB.NET] اضافة وعرض اى نوع من الملفات داخل قاعدة بيانات SQL.
[مشروع][VB.NET] اضافة وعرض اى نوع من الملفات داخل قاعدة بيانات Access.

تحياتى للجميع
وتمنياتى لكم التوفيق الدائم


الملفات المرفقة
.zip   Pro Access.zip (الحجم : 42.62 ك ب / التحميلات : 365)
.zip   Store And Retrieve Files Access.zip (الحجم : 39.52 ك ب / التحميلات : 299)
.zip   IMG.zip (الحجم : 8.93 ك ب / التحميلات : 212)
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
#2
وعليكم السلام ورحمة اله وبركاتة

الله يرحمك ويرحم والديك

ابدعت كعادتك

1+
تثبيت
5 نجوم
الرد }}}
تم الشكر بواسطة: elgokr , asemshahen5
#3
اللهم امين يارب العالمين
لى ولك وللجميع بامر الله

كل الشكر لك اخى العزيز sendbad100

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: sendbad100 , asemshahen5
#4
(08-03-19, 03:13 PM)elgokr كتب :
السلام عليكم ورحمة الله وبركاته

اليوم اضع بين ايديكم مثال مبسط 
مع الشرح بداخل الكود فى السورس
عن كيفية تخزين الملفات داخل قاعدة البيانات 
و اعادة استدعاء الملف من قاعدة البيانات وفتحه

صورة وجهة البرنامج


صورة تصميم الجدول المستخدم بالسورس المرفق


مرفق بالمرفقات السورس + قاعدة البيانات Access + برنامج للمعنة والاختبار + الصور المستخدمة بالموضوع
فقط قم ملف قاعدة البيانات المرفقة بجاب البرنامج عند اتمام التشغيل
ويمكنك بعد ذلك التعامل فى السورس مباشراً بعد ادراج قاعدة البيانات بجانب البرنامج

السورس المرفق 2015
اتمنى ان يكون الكود مبسط لدا الجميع
كما ان يكون الوضع سهل وبسيط لطريقة الاستخدام

وبالنهاية الكود كاملاً خاص السورس المرفق
كود :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
using System.IO;
using System.Diagnostics;

namespace Store_And_Retrieve_Files
{
   public partial class Form1 : Form
   {
       // قم بتغيير كود الاتصال بقاعدة البيانات فى السطر التالى
       OleDbConnection con = new OleDbConnection(@"provider=microsoft.ace.oledb.12.0;data source=Database.accdb");
       OleDbCommand cmd;
       OleDbDataAdapter Da;
       DataTable dt = new DataTable();

       public Form1()
       {
           InitializeComponent();
           // تحميل البيانات بالداتا جريد
           GetLoadData();
       }

       private void button1_Click(object sender, EventArgs e)
       {
           // اختيار الملف المطلوب استخدامه للحفظ بقاعدة البيانات
           OpenFileDialog OFD = new OpenFileDialog();
           DialogResult dlgRes = OFD.ShowDialog();
           if (dlgRes != DialogResult.Cancel)
           {
               // مسار الملف كاملاً
               textBox2.Text = OFD.FileName;
               // التحقق باذا البيانات مدخلة لاتمام تفعيل زر الحفظ
               if (string.IsNullOrWhiteSpace(textBox2.Text) || string.IsNullOrWhiteSpace(textBox1.Text))
               {
                   button3.Enabled = false;
               }
               else
               {
                   button3.Enabled = true;
               }
           }
       }

       private void textBox1_TextChanged(object sender, EventArgs e)
       {
           // التحقق باذا البيانات مدخلة لاتمام تفعيل زر الحفظ
           if (string.IsNullOrWhiteSpace(textBox2.Text) || string.IsNullOrWhiteSpace(textBox1.Text))
           {
               button3.Enabled = false;
           }
           else
           {
               button3.Enabled = true;
           }
       }

       private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
       {
           // تفعيل الكتابة فقط لاسم الملف
           e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Space);
       }

       private void button3_Click(object sender, EventArgs e)
       {
           // تحويل الملف الى Byte
           FileStream FFS = new FileStream(textBox2.Text, FileMode.Open);
           BinaryReader FBR = new BinaryReader(FFS);
           int ii = unchecked((int)FFS.Length);
           byte[] FileCon = FBR.ReadBytes(ii);
           FFS.Close();
           FBR.Close();

           // اضافة البيانات بقاعدة البيانات
           cmd = new OleDbCommand("Insert into TB_File (FileName,FileExt,Attachment) Values (@FileName,@FileExt,@Attachment)", con);
           con.Open();
           cmd.Parameters.Add(new OleDbParameter("@FileName", SqlDbType.NVarChar)).Value = textBox1.Text;
           cmd.Parameters.Add(new OleDbParameter("@FileExt", SqlDbType.NVarChar)).Value = Path.GetExtension(textBox2.Text);
           cmd.Parameters.Add(new OleDbParameter("@Attachment", SqlDbType.VarBinary)).Value = FileCon;
           cmd.ExecuteNonQuery();
           con.Close();
           MessageBox.Show("OK!");
           // تحميل البيانات بالداتا جريد
           GetLoadData();
           // تفريغ كلاً من اداء النصوص
           textBox1.Clear();
           textBox2.Clear();
       }

       // تعريف متغيير من نوع رقم ليتم تسجيل به رقم الصف عند تحديده من الداتا جريد
       private int DgId { get; set; }
       // جلب البيانات وتعبئتها فى الداتا جريد
       private void GetLoadData()
       {
           // تفريغ DT
           dt.Clear();
           // جلب البيانات من قاعدة البيانات
           cmd = new OleDbCommand("select * from TB_File", con);
           Da = new OleDbDataAdapter(cmd);
           Da.Fill(dt);
           // تعبئة الداتا جريد بالبيانات التى تم تعبئتها
           dataGridView1.DataSource = dt;
           // تسمية الاعمدة فى الداتا جريد
           dataGridView1.Columns[0].HeaderText = "ID";
           dataGridView1.Columns[1].HeaderText = "File Name";
           dataGridView1.Columns[2].HeaderText = "File Extension";
           // اخفاء العمود الاخير تجنباً من ظهور رسالة اخطاء
           // خصوصاً اذا كان الملف المرفق ليس صورة
           dataGridView1.Columns[3].Visible = false;
       }
       private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
       {
           // اعطاء المتغيير المعرف من نوع رقم قيمة رقم الصف
           DgId = e.RowIndex;
       }

       private void button2_Click(object sender, EventArgs e)
       {
           // التحقق اذا كان الداتا جريد ممتلئة ام فارغة لتنفيذ كود فتح الملف
           if (dataGridView1.RowCount > 0)
           {
               // تحويل الكود المسجل بقاعدة البيانات الى ملف
               byte[] ff = (byte[])dt.Rows[DgId][3];
               var FPath = dt.Rows[DgId][1].ToString() + dt.Rows[DgId][2].ToString();
               FileStream FFS = new FileStream(FPath, FileMode.Create, FileAccess.Write);
               FFS.Write(ff, 0, ff.Length);
               FFS.Close();
               // تنفيذ فتح الملف بعد انشائه بالكود السابق
               Process.Start(FPath);
           }
           else
           {
               // رسالة تنبيه بان الداتا جريد فارغة
               MessageBox.Show("Please Add Any Data So You Can Open File Selected.");
           }
       }
   }
}

مواضيع ذات صلة:
[مشروع][C#] اضافة وعرض اى نوع من الملفات داخل قاعدة بيانات SQL.
- [مشروع][C#] اضافة وعرض اى نوع من الملفات داخل قاعدة بيانات Access.
[مشروع][VB.NET] اضافة وعرض اى نوع من الملفات داخل قاعدة بيانات SQL.
[مشروع][VB.NET] اضافة وعرض اى نوع من الملفات داخل قاعدة بيانات Access.

تحياتى للجميع
وتمنياتى لكم التوفيق الدائم

خوية سويت نسخ ولسق الكود بالبوتن داخل انشاء حدث ظهر الكود بالاحمر يقول خطا من انقر على البوتن ليش
الرد }}}
تم الشكر بواسطة:
#5
(15-07-19, 01:05 AM)امير الشمري كتب : خوية سويت نسخ ولسق الكود بالبوتن داخل انشاء حدث ظهر الكود بالاحمر يقول خطا من انقر على البوتن ليش

مرحباً اخى امير الشمري

فى البداية اسف على تاخيري بالرد عليك بسبب عدم تواجدى الفترة الاخيرة

بخصوص الخطاء اتمنى وضع صورة لما حدث معك
حتى اوضح لك ما اسباب تلك الاخطاء

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو
#6
بارك الله فيك على العمل الجبار لا تحرمنا من جديدك
الرد }}}
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو
#7
بارك الله فيك
الرد }}}
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو
#8
السلام عليكم ورحمة الله وبركاته
تجريب المثال :
فليقم أحدكم بتخزين ملف بحجم 500 ميجا داخل قاعدة البيانات ثم استدعاؤه، وأفيدونا بالنتيجة
واعبد ربك حتى يأتيك اليقين
الرد }}}
#9
(28-02-20, 07:24 AM)khodor1985 كتب : السلام عليكم ورحمة الله وبركاته
تجريب المثال :
فليقم أحدكم بتخزين ملف بحجم 500 ميجا داخل قاعدة البيانات ثم استدعاؤه، وأفيدونا بالنتيجة

انت تتحدث عن قاعدة بيانات Access ????
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , ابراهيم ايبو


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Thumbs Up التعامل مع قارء البصمة - تخزينها ومقارنتها في قاعدة البيانات - FingerPrint Reader Rabeea Qbaha 6 5,576 26-12-23, 10:22 AM
آخر رد: تركي احمد
  مشروع الاتصال باي سيرقر و تعديل اسم قاعدة بيانات Kamil 0 394 22-12-23, 01:00 PM
آخر رد: Kamil
Video [درس فيديو] شرح إنشاء تطبيق Xamarin & SQLite (تخزين الصور في قاعدة البيانات وعرضها في الهاتف) rabia al hamdani 0 420 14-09-23, 10:20 AM
آخر رد: rabia al hamdani
Lightbulb عمل Attach و Detach لقاعدة بيانات MS Sql Server asemshahen5 4 3,440 24-08-23, 01:24 PM
آخر رد: acvdrink
  [C#.NET] افضل واقوي سورس كود برنامج ادارة مبيعات موجود علي النت قاعده بيانات سيكول سيرفر magdmalak 4 4,588 14-05-23, 11:15 PM
آخر رد: frkty
Video [درس فيديو] انشاء تطبيق Android وقاعدة بيانات sqlite وإستخدام صانع الاكواد الاحتراف rabia al hamdani 2 2,374 10-01-23, 03:38 AM
آخر رد: rabia al hamdani
Heart [مشروع] النسخة السابعة من برنامج استخراج مكتبة برمجية لاي قاعدة بيانات Sqlite 3 ربيع الهمداني 1 2,383 16-11-22, 12:43 PM
آخر رد: nouribenyahia
Video [مشروع] حزمه كامله من برامج توليد كود مكتبة برمجية مفتوح المصدر سي شارب لأي قاعدة بيانات 8 ربيع الهمداني 1 4,234 30-08-22, 02:41 AM
آخر رد: bluenezew
  سي شارب للمبتدئين: الاتصال مع قاعدة بيانات اكسيس(الادراج - والتعديل - البحث - الحذف) ggtt17121985 0 1,308 23-07-22, 03:28 AM
آخر رد: ggtt17121985
Video [درس فيديو] 4- إنشاء تطبيق اندرويد مع قاعدة بيانات Sqlite3 وتحويل Sql Server TO Sqlite خطوة بـ.. rabia al hamdani 0 2,052 11-05-22, 02:27 AM
آخر رد: rabia al hamdani

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


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