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

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

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


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


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

السورس المرفق 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.SqlClient;
using System.IO;
using System.Diagnostics;

namespace Store_And_Retrieve_Files
{
   public partial class Form1 : Form
   {
       // قم بتغيير كود الاتصال بقاعدة البيانات فى السطر التالى
       SqlConnection con = new SqlConnection(@"Server=.;Database=DB;Integrated Security=True");
       SqlCommand cmd;
       SqlDataAdapter 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 SqlCommand("Insert into TB_File (FileName,FileExt,Attachment) Values (@FileName,@FileExt,@Attachment)", con);
           con.Open();
           cmd.Parameters.Add(new SqlParameter("@FileName", SqlDbType.NVarChar)).Value = textBox1.Text;
           cmd.Parameters.Add(new SqlParameter("@FileExt", SqlDbType.NVarChar)).Value = Path.GetExtension(textBox2.Text);
           cmd.Parameters.Add(new SqlParameter("@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 SqlCommand("select * from TB_File", con);
           Da = new SqlDataAdapter(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   img.zip (الحجم : 7.61 ك ب / التحميلات : 134)
.zip   Store And Retrieve Files.zip (الحجم : 15.39 ك ب / التحميلات : 184)
.zip   Script Table as SQL Server.zip (الحجم : 439 بايت / التحميلات : 159)
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


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

الله يبارك يبارك فيك وفي عملك

الله لا يحرمنا ابداعاتك

+1
5 نجوم
تثبيت
الرد
تم الشكر بواسطة: حريف برمجة , elgokr , asemshahen5 , ابراهيم ايبو
#3
جزاكم الله خيرا 


شكرا لكم Smile
الرد
#4
(07-03-19, 10:50 PM)sendbad100 كتب :
وعليكم السلام  ورحمة الله وبركاته

الله يبارك يبارك فيك وفي عملك

الله لا يحرمنا ابداعاتك

+1
5 نجوم
تثبيت

شكراً لك اخى الغالي sendbad100
وبارك الله لك بالمثل وللجميع بامر الله

تحياتى لك
وتمنياتى لك التوفيق

(07-03-19, 11:20 PM)Sajad كتب : جزاكم الله خيرا 


شكرا لكم Smile

لى ولك وللجميع بالمثل اخى Sajad


فالشكر لله والحمد لله
والحمد لله على كل حال

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

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو
#5
   بارك الله في جهودكم المباركة وجعله في ميزان حسناتكم    

كم انت متالق يامبدع
الرد
تم الشكر بواسطة: elgokr , elgokr , asemshahen5 , ابراهيم ايبو
#6
لى ولك وللجميع يارب العالمين

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

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو
#7
ماشاء الله أخي Elgokr متألق دائما بالاخلاق الراقية والعلم النافع
لايسعني الا أن أقول مبدع
+1
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: elgokr , elgokr , asemshahen5
#8
هذا من اصلك الطيب اخى ابراهيم ايبو
كل عام وانت بخير وعيد مبارك على الامة الاسلامية اجمعين

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

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو
#9
كل التقدير والإحترام لك أخوي
الرد
تم الشكر بواسطة: asemshahen5
#10
متميز بارك الله في علمك وجهودك
الرد
تم الشكر بواسطة: asemshahen5


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Star [مشروع] النسخة السابعة من برنامج استخراج مكتبة برمجية لاي قاعدة بيانات MySql ربيع الهمداني 2 584 29-08-20, 02:43 AM
آخر رد: حريف برمجة
Video [مشروع] حزمه كامله من برامج توليد كود مكتبة برمجية مفتوح المصدر سي شارب لأي قاعدة بيانات 8 ربيع الهمداني 0 211 05-08-20, 07:43 AM
آخر رد: ربيع الهمداني
Thumbs Up التعامل مع قارء البصمة - تخزينها ومقارنتها في قاعدة البيانات - FingerPrint Reader Rabeea Qbaha 0 223 05-08-20, 04:35 AM
آخر رد: Rabeea Qbaha
Video [مثال] اقل من دقيقتين عمل واجهه تسجيل بيانات الطالب مع قاعدة البيانات Oracle And c# ربيع الهمداني 0 422 11-07-20, 02:33 AM
آخر رد: ربيع الهمداني
Video [مثال] تحويل قاعدة بيانات برنامج ادخال بيانات الطالب من Sql_Server To SqlLite 3 في 3 دقائق ربيع الهمداني 0 204 10-07-20, 03:15 AM
آخر رد: ربيع الهمداني
Video [مثال] عمل واجهه تسجيل بيانات الطالب مع قاعدة البيانات في خمس دقائق C# <> Sql_server ربيع الهمداني 0 218 09-07-20, 04:11 AM
آخر رد: ربيع الهمداني
Heart [مشروع] النسخة السابعة من برنامج استخراج مكتبة برمجية لاي قاعدة بيانات ORACLE ربيع الهمداني 0 340 16-04-20, 12:47 PM
آخر رد: ربيع الهمداني
  [درس فيديو] كيف تحول اي قاعدة بيانات اكسس الى mysql aljzazy 0 243 10-04-20, 08:56 PM
آخر رد: aljzazy
  [مشروع] اضافة وعرض اى نوع من الملفات داخل قاعدة بيانات Access elgokr 8 3,990 27-03-20, 06:54 AM
آخر رد: kiki
Heart [مشروع] النسخة السابعة من برنامج استخراج مكتبة برمجية لاي قاعدة بيانات Sqlite 3 ربيع الهمداني 0 352 24-02-20, 06:29 AM
آخر رد: ربيع الهمداني

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


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