zoukankan      html  css  js  c++  java
  • 基于winform的二进制图片数据的存取(用于数据库照片的读写处理)

    编程目的文本框1中输入id号,则从openFileDialog中选择的图片会以二进制数据存进SQL数据库的对应表的id列;文本框2中输入姓名,从数据库读取对应name的照片并显示在pictureBox控件上。

    预备操作新建一个sql数据库,包含一个拥有id和name,image的表,如下图所示,窗体中拖拽两个文本框和两个button按钮。


    1、主功能类

     

      public void SaveImage(string ID,OpenFileDialog openF)  //openFileDialog打开的图片以二进制流的方式存到数据库的指定表的指定id号的记录中
            { 
                string P_str = openF.FileName;
                FileStream fs = new FileStream(P_str,FileMode.Open,FileAccess.Read);
                BinaryReader br = new BinaryReader(fs);
                byte[] imageBytesIn = br.ReadBytes((int)fs.Length);
                SqlConnection conn = BaseClass.DBConn.CyCon();
                conn.Open();
                StringBuilder strSql = new StringBuilder();
                strSql.Append("update test_photo set photo=@Photo where id="+ID);
                SqlCommand cmd = new SqlCommand(strSql.ToString(),conn);
                cmd.Parameters.Add("@Photo",SqlDbType.Binary).Value=imageBytesIn;
                cmd.ExecuteNonQuery();
                conn.Close();
            }
    
            public void Get_Image(string  yname,PictureBox pb)//从数据库中读取指定姓名的二进制数据图片并显示
            {   byte[]imagebytes=null;
                SqlConnection conn = BaseClass.DBConn.CyCon();
                conn.Open();
                SqlCommand com=new SqlCommand("select * from test_photo where name='"+yname+"'",conn);
                SqlDataReader dr=com.ExecuteReader();
                while(dr.Read())
                {imagebytes=(byte[])dr.GetValue(1);}
                dr.Close();
                conn.Close();
                MemoryStream ms=new MemoryStream(imagebytes);
                Bitmap bmpt = new Bitmap(ms);
                pb.Image = bmpt;
              
            }

    2、调用类

     

      bll b = new bll();
            
            private void btnSavePhotoToDB_Click(object sender, EventArgs e)
            {
                
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    b.SaveImage(textBox1.Text, openFileDialog1);
                    
                }
                
                MessageBox.Show("存照片成功");//支持bmp,jpg,gif
            }
    
            private void btnShowPhotoFromDB_Click(object sender, EventArgs e)
            {
                b.Get_Image(textBox2.Text, pictureBox1);
            }


    3、运行效果图




  • 相关阅读:
    sklearn使用高斯核SVM显示支持向量
    决策树和随机森林分类
    线性回归曲线和过拟合判断
    wave数据集的回归曲线
    用KNN实现iris的4分类问题&测试精度
    pandas绘制矩阵散点图(scatter_matrix)的方法
    6种字符串数组的java排序 (String array sort)
    Spring中Quartz的配置
    jquery easyui datagrid js获取记录数 页数 当前页
    EasyUI的treegrid组件动态加载数据问题的解决办法
  • 原文地址:https://www.cnblogs.com/riskyer/p/3333771.html
Copyright © 2011-2022 走看看