图片保存到数据库和从数据库读取图片并显示(C#)

本文介绍了将图片文件保存到数据库及从数据库读取图片并在PictureBox中显示的具体实现方法。包括两种从数据库读取图片的方式:一种是通过SQL查询直接获取图片数据;另一种是在DataGridView中选择一行时动态加载图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图片保存到数据库的方法:

        public void imgToDB(string sql)

        {   //参数sql中要求保存的imge变量名称为@images

            //调用方法如:imgToDB("update UserPhoto set Photo=@images where UserNo='" + temp + "'");

            FileStream fs = File.OpenRead(t_photo.Text);

            byte[] imageb = new byte[fs.Length];

            fs.Read(imageb, 0, imageb.Length);

            fs.Close();

            SqlCommand com3 = new SqlCommand (sql,con);

            com3.Parameters.Add("@images", SqlDbType.Image).Value = imageb;

            if (com3.Connection.State == ConnectionState.Closed)

                com3.Connection.Open();

            try

            {

                com3.ExecuteNonQuery();

            }

            catch

            { }

            finally

            { com3.Connection.Close(); }

        }

数据库中读出图片并显示在picturebox中:

方法一:

private void ShowImage(string sql)

     {

     //调用方法如:ShowImage("select Photo from UserPhoto where UserNo='" + userno +"'");

     SqlCommand cmd = new SqlCommand(sql, conn);

     conn.Open();

     byte[] b= (byte[])cmd.ExecuteScalar();

     if (b.Length 〉 0)

     {

     MemoryStream stream = new MemoryStream(b, true);

     stream.Write(b, 0, b.Length);

     pictureBox1.Image = new Bitmap(stream);

     stream.Close();

     }

     conn.Close();

     }

方法二:当在dg中选中某行时:

  private void dg_MouseUp(object sender, MouseEventArgs e)

        {

            //整行选择

            if (e.Button == System.Windows.Forms.MouseButtons.Left)

            {//用户编号,姓名,性别,身份证号,籍贯,学院,系所,校区,部门,电话,照片

                 //显示相片

                object imgobj=dg[10, dg.CurrentRow.Index].Value;

                if (imgobj != null && !Convert.IsDBNull(imgobj))

                {

                    byte[] imgb = (byte[])imgobj;

                    MemoryStream memStream = new MemoryStream(imgb);

                    try

                    {

                        Bitmap myimge = new Bitmap(memStream);

                        this.pictureBox1.Image = myimge;

                    }

                    catch

                    {

                        DB.msgbox("从数据库读取相片失败!");

                    }

                }

                else

                    pictureBox1.Image = null;

            }

        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值