C#中 將圖片保存到Sql server 中


      private void Form1_Load(object sender, EventArgs e)
        {
            #region 保存數據庫
            string url = @"C:\Users\Administrator\Desktop\tiger.jpg";
            byte[] dd = GetPictureData(url);

            kkkkk(dd);//保存到數據庫中  
            #endregion


            Read();// 從數據庫中讀取保存到 C盤 

        }
        /// <summary>
        /// 保存到數據庫
        /// </summary>
        /// <param name="imgBytesIn"></param>
        private void kkkkk(byte[] imgBytesIn)
        {
                try
                {
                    SqlConnection con = new SqlConnection("server=192.168.1.118,1433;uid=sa;pwd=123456;database=aa");
                    con.Open();
                    SqlCommand cmd = new SqlCommand("insert  into aaaa (img) values( @Image ) ;", con);
                    cmd.Parameters.Add("@Image", SqlDbType.Image);
                    cmd.Parameters["@Image"].Value = imgBytesIn;
                    cmd.ExecuteNonQuery();
 
                    con.Close();
                    MessageBox.Show("圖片上傳成功"); 
 
                }
                catch
                {
                    MessageBox.Show("您選擇的圖片不能被讀取或文件類型不對!", "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                   
                }
               
        }      
        /// <summary>
        /// 從數據庫中  圖片 並且保存到C盤
        /// </summary>
        public void Read()
         {
             byte[] MyData = new byte[0];
             using (SqlConnection conn = new SqlConnection("server=192.168.1.118,1433;uid=sa;pwd=123456;database=aa"))
             {
                 conn.Open();
                 SqlCommand cmd = new SqlCommand();
                 cmd.Connection = conn;
                 cmd.CommandText = "select * from aaaa";
                 SqlDataReader sdr = cmd.ExecuteReader();
                 sdr.Read();
                 object o = sdr["img"];
                 MyData = (byte[])sdr["img"];//讀取第一個圖片的位流
                 int ArraySize= MyData.GetUpperBound(0);//獲得數據庫中存儲的位流數組的維度上限,用作讀取流的上限
 
                FileStream fs = new FileStream(@"c:\00.jpg", FileMode.OpenOrCreate, FileAccess.Write);
                 fs.Write(MyData, 0, ArraySize);
                 fs.Close();   //-- 寫入到c:\00.jpg。
                 conn.Close();
                 Console.WriteLine("讀取成功");//查看硬盤上的文件
             }
         }

        /// <summary>
        /// 根據路徑將圖片轉換成 byte[]
        /// </summary>
        /// <param name="imagepath"></param>
        /// <returns></returns>
        public byte[] GetPictureData(string imagepath)
        {
            /**/
            ////根據圖片文件的路徑使用文件流打開,並保存為byte[] 
            FileStream fs = new FileStream(imagepath, FileMode.Open);//可以是其他重載方法 
            byte[] byData = new byte[fs.Length];
            fs.Read(byData, 0, byData.Length);
            fs.Close();
            return byData;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM