您的位置:首页 > 数据库

保存图形到数据库及从数据库读取图像

2008-12-03 21:29 447 查看
1.保存图像到数据库
  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(); }

}

 

2.数据库中读出图片并显示在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;
     }
        }

 

3.另一种读取方法。

//绑定DataList
    protected void DataListBind()
    {
        ConStr con = new ConStr();
        con.OpenCon();
        string str = "select  * from Magazine order by MagaDate desc, MagaId desc";
        SqlDataAdapter da = new SqlDataAdapter(str, con.Con);
        DataSet ds = new DataSet();
        da.Fill(ds, "Magazine");

        this.DataList1.DataSource = ds.Tables["Magazine"];
        DataList1.DataBind();
        con.CloesCon();

 

       //调用读数据库中图片方法
        ReadPic();

       for (int i = 0; i < DataList1.Items.Count; i++)
        {
            HiddenField hf = (HiddenField)this.DataList1.Items[i].FindControl("HiddenField3");
            string strName = hf.Value.ToString();
            System.Web.UI.WebControls.Image im = (System.Web.UI.WebControls.Image)DataList1.Items[i].FindControl("Image5");
            im.ImageUrl = "Image/" + strName + ".jpg";
        }

    }

 

   //从数据库中将杂志封面读出来
    protected void ReadPic()
    {

       //ConStr工具类
        ConStr con = new ConStr();
        con.OpenCon();
        string str = "select * from Magazine order by MagaDate desc";

       //ReadFiledValue工具类
        ReadFiledValue read = new ReadFiledValue(str);

        if (read.ErrorNumber == 0)
        {
            while (read.GetDR.Read())
            {
               byte[] picbyte = (byte[])read.GetDR["MagaImg"];
                string name = read.GetDR["MagaFileName"] + ".jpg";
                string path = Server.MapPath("Image//") + name;

                using (FileStream pic = File.Create(path, 1024))
                {
                    pic.Write(picbyte, 0, picbyte.Length);
                    pic.Close();
                }
            }
        }
        else
        {
           //Image1.AlternateText = "没有图片";
        }
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息