حفظ ملف من اي نوع في قاعدة البيانات من نوع Sql

رسول الساعدي • منذ 5 سنوات

السلام عليكم اخوتي الاعزاء 
واجهت مشكلة في المشروع وهي عند خزن ملف معين باي صيغة كان يعطي خطا وحاولت اصلاحه لم اتمكن لذا ارجو من الاخوة الخبراء النظر في كودات الفورم.
 وسوف ادرج كودات الفورم كاملا قد يكون الخلل في مكان معين مع الشكر الجزيل

 

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;

namespace banat_alhssan
{
    public partial class In_ : Form
    {
        //كود ربط الفيجوال بيسك مع  sql//

        SqlConnection con = new SqlConnection(@"Server= DESKTOP-KJB46EH\MORABSQLE ;Database=DB;Integrated Security=True");
        SqlCommand cmd;
        SqlDataAdapter Da;
        DataTable dt = new DataTable();



        public In_()
        {
            InitializeComponent();
            dataGridView1.Columns.Clear();
            rasool();
            shamas();


        }

        void rasool()
        {
            //تعبئة الداتا كرد فيو
            cmd = new SqlCommand("select * from TB_In", con);
            Da = new SqlDataAdapter(cmd);
            Da.Fill(dt);
            this.dataGridView1.DataSource = dt;
            //  dataGridView1.Columns[1].Width = 120;
            dataGridView1.Columns[0].HeaderText = "التسلسل";    
            dataGridView1.Columns[1].HeaderText = "رقم الكتاب";
            dataGridView1.Columns[2].HeaderText = "الجهة";
            dataGridView1.Columns[3].HeaderText = "التاريخ";
            dataGridView1.Columns[4].HeaderText = "نوع الكتاب";
            dataGridView1.Columns[5].HeaderText = "العنوان";
            dataGridView1.Columns[6].HeaderText = "الملاحظات";

            // عمل بوتون

            DataGridViewButtonColumn btn = new DataGridViewButtonColumn();
            btn.HeaderText = "المرفقات";
            btn.Text = "الملف";
            btn.UseColumnTextForButtonValue = true;
            dataGridView1.Columns.Add(btn);

        }
        void shamas()
        //تعبئة الكومبوكس
        {
           // Da = new SqlDataAdapter("select * from TB_In ", con);
          //  Da.Fill(dt);
            comboBox1.DataSource = dt;
           comboBox1.DisplayMember = "Organization";
         //   comboBox1.ValueMember = "Id";


        }       
        private void In__Load(object sender, EventArgs e)
        {

        }

        private void label6_Click(object sender, EventArgs e)
        {

        }

        private void but_out_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void but_new_Click(object sender, EventArgs e)
        {

            text_Id.Clear();
            text_Number.Clear();
            text_Title.Clear();
            text_Notes.Clear();
            comb_Type.Text = "";
            comboBox1.Text = "";
            groupBox1.Enabled = true;
            but_Save.Enabled = true;
            but_add.Enabled = true;
            

            teba();
           






        }

        void teba()
            // ترقيم تلقائي
        {
            SqlCommand cmd = new SqlCommand("select ISNULL (MAX(Id)+1,1) from  TB_In", con);
            con.Open();
            SqlDataReader Ra = cmd.ExecuteReader();

            Ra.Read();
            text_Id.Text = Ra[0].ToString();
            Ra.Close();
            con.Close();
        }
        private void but_Save_Click(object sender, EventArgs e)
        {
           
            try
            {
                for (int i = 0; i < listView1.Items.Count; i++)
                    cmd = new SqlCommand("Insert into TB_In  (Id,Number,Organization,Date,Type,Title,Notes,FileData,FileName,FileType) Values ('" + text_Id.Text + "','" + comboBox1.Text + "','" + text_Number.Text + "','" + dateTimePicker1.Value + "','" + comb_Type.Text + "','" + text_Title.Text + "','" + text_Notes.Text + "','" + File.ReadAllBytes(listView1.Items[i].SubItems[0].Text) + "','" + listView1.Items[i].SubItems[1].Text + "','" + listView1.Items[i].SubItems[2].Text + "')", con);
          
                con.Open();

            cmd.ExecuteNonQuery();
           
            //MessageBox.Show("تم الحفظ النص");
            }
            catch  (SqlException  ex)
            {
            MessageBox.Show("تم الحفظ" + ex.Message);
        
            }
               
            finally
            {
                con.Close();
                //ward();

           
            }
            text_Id.Text = "";
            comboBox1.Text = "";
            text_Number.Text = "";
            comb_Type.Text = "";
            text_Title.Text = "";
            text_Notes.Text = "";
            teba();
        }

        private SqlCommand SqlCommand(string p, SqlConnection con)
        {
            throw new NotImplementedException();
        }

        //void ward()
        //{
        //for (int i=0; i< listView1.Items.Count;i++)
        //{
        //    SqlCommand cmd =new SqlCommand("Insert into TB_In (FileData,FileName,FileType) values(@fd,@fn,@ft",con);
        //    cmd.Parameters.AddWithValue("@fd",File.ReadAllBytes(listView1.Items[i].SubItems[0].Text));
        //    cmd.Parameters.AddWithValue("@fn",listView1.Items[i].SubItems[1].Text);
        //    cmd.Parameters.AddWithValue("@ft",listView1.Items[i].SubItems[2].Text);
        //    //con.Open();
        //    cmd.ExecuteNonQuery();
        //   con.Close();
        ////}
        //    MessageBox.Show("تم الحفظ الملف");

        //}
         
       
        private void button1_Click()
        {
            throw new NotImplementedException();
        }

     //       cmd.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int)).Value = text_Id.Text;
       //     cmd.Parameters.Add(new SqlParameter("@Number", SqlDbType.VarChar)).Value = comboBox1.Text;
         //   cmd.Parameters.Add(new SqlParameter("@Organization", SqlDbType.VarChar)).Value = text_Number.Text;
            //  cmd.Parameters.Add(new SqlParameter("@Date", SqlDbType.DateTime)).Value = dateTimePicker1.Value;
            //cmd.Parameters.Add(new SqlParameter("@Type", SqlDbType.VarChar)).Value = comb_Type.Text;
            //cmd.Parameters.Add(new SqlParameter("@Title", SqlDbType.VarChar)).Value = text_Title.Text;
            //cmd.Parameters.Add(new SqlParameter("@Notes", SqlDbType.VarChar)).Value = text_Notes.Text;
            //con.Open();
            //cmd.ExecuteNonQuery();
            //con.Close();
          


           // cmd = new SqlCommand("TB_In", con);
           // cmd.CommandType = CommandType.StoredProcedure;

           // SqlParameter[] param = new SqlParameter[7];
        //    param[0]=new SqlParameter("@Id",SqlDbType.Int);
          //  param[0].Value=text_Id.Text;
           // param[1] = new SqlParameter("@Number", SqlDbType.VarChar, 50);
           // param[1].Value = comboBox1.Text;
            //param[2] = new SqlParameter("@Organization", SqlDbType.VarChar, 50);
            //param[2].Value = text_Number.Text;
            //param[3] = new SqlParameter("@Date", SqlDbType.DateTime);
            //param[3].Value = dateTimePicker1.Text;
            //param[4] = new SqlParameter("@Type", SqlDbType.VarChar, 50);
            //param[4].Value = comb_Type.Text;
            //param[5] = new SqlParameter("@Title", SqlDbType.VarChar, 50);
            //param[5].Value = text_Title.Text;
            //param[6] = new SqlParameter("@Notes", SqlDbType.VarChar, 50);
            //param[6].Value = text_Notes.Text;
           // cmd.Parameters.AddRange(param);
            //con.Open();
            //cmd.ExecuteNonQuery();
            //con.Close();

           




        

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void but_add_Click(object sender, EventArgs e)
        {
            OpenFileDialog opn = new OpenFileDialog();
            opn.Multiselect = true;
            if (opn.ShowDialog() == DialogResult.OK)
            {
                foreach (string p in opn.FileNames)
                {
                    ListViewItem itm = new ListViewItem(p);
                    itm.SubItems.Add(Path.GetFileNameWithoutExtension(p));
                    itm.SubItems.Add(Path.GetExtension(p));
                    listView1.Items.Add(itm);


                }
            }
        }


            



    
           
      





        //    //اطلب من المستخدم لتحديد الملف.
        //    OpenFileDialog dlg = new OpenFileDialog();
        //    DialogResult dlgRes = dlg.ShowDialog();
        //    if (dlgRes != DialogResult.Cancel)
        //    {
        //        //توفير مسار الملف في مربع النص txtFilePath.
        //        txtFilePath.Text = dlg.FileName;
        //    }
        //}

        ////افتح الملف في filestream واقرأ البيانات في صفيف بايت.
        //byte[] ReadFile(string sPath)
        //{
        //    //تهيئة صفيف بايت مع قيمة فارغة في البداية.
        //    byte[] data = null;

        //    //استخدم كائن FileInfo للحصول على حجم الملف.
        //    FileInfo fInfo = new FileInfo(sPath);
        //    long numBytes = fInfo.Length;

        //    //افتح FileStream لقراءة الملف
        //    FileStream fStream = new FileStream(sPath, FileMode.Open, FileAccess.Read);

        //    //استخدم BinaryReader لقراءة دفق الملف إلى صفيف بايت.
        //    BinaryReader br = new BinaryReader(fStream);

        //    //عند استخدام BinaryReader ، تحتاج إلى توفير عدد وحدات البايت للقراءة من الملف.
        //    //في هذه الحالة ، نريد قراءة الملف بأكمله. حتى تقديم العدد الإجمالي للبايت.
        //    data = br.ReadBytes((int)numBytes);

        //    //إغلاق BinaryReader
        //    br.Close();

        //    //إغلاق FileStream
        //    fStream.Close();

        //    return data;

       
        //void rasool1986()
        //{
        //    //{
        //        //try
        //        //{
        //            //قراءة بايت ملف إلى صفيف بايت
        //            byte[] FileData = ReadFile(txtFilePath.Text);

        //            //تهيئة اتصال SQL Server
        //            // SqlConnection CN = new SqlConnection(@"Server= DESKTOP-KJB46EH\MORABSQLE ;Database=DB;Integrated Security=True");

        //            //تعيين إدراج الاستعلام
        //            string qry = "insert into FilesStore (OriginalPath,FileData) values(@OriginalPath, @FileData)";

        //            //تهيئة كائن SqlCommand لإدراج.
        //            SqlCommand SqlCom = new SqlCommand(qry, con);

        //            //نحن تمرير مسار الملف الأصلي وبيانات بايت الملف كمعلمات SQL.
        //            SqlCom.Parameters.Add(new SqlParameter("@OriginalPath", (object)txtFilePath.Text));
        //            SqlCom.Parameters.Add(new SqlParameter("@FileData", (object)FileData));

        //            //افتح الاتصال وقم بتنفيذ استعلام الإدراج.
        //            con.Open();
        //            SqlCom.ExecuteNonQuery();
        //            con.Close();

        //            //إغلاق النموذج والعودة إلى قائمة أو ملفات.
        //            this.Close();
        //    //    }
        //    //    catch (Exception)
        //    //    {
        //    //        //MessageBox.Show(ex.ToString());
        //    //    }
        //    //}
        //}

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if(e.ColumnIndex==3)
            {      
            MessageBox.Show((e.RowIndex+1).ToString()+"Row Clicked");
            }
        }


        public string p { get; set; }

        public string P { get; set; }
    }
    }

 

 

 

 

 

 

كلمات دليلية: c#

ساعد بالإجابة

"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."

الإجابات (1)

عمار الخوالدة • منذ 5 سنوات

بحسب نص الخطأ، فأنت تحاول تخزين قيمة من نوع varchar في حقل يقبل النوع varbinary، تحتاج الى تحويل القيمة باستخدام الدالة CONVERT قبل التخزين.

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !