编程目的:文本框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、运行效果图

基于winform的二进制图片数据的存取(用于数据库照片的读写处理)的更多相关文章

  1. Asp .net core api+Entity Framework 实现数据的存取到数据库中

    最近在学dotNetCore 所以尝试了一下api 这个功能 不多说了大致实现如下 1.用vs2017建立一个Asp.net  Core Web 应用程序 在弹出的对话框中选择 Web API 项目名 ...

  2. ios 向sqlite数据库插入和读取图片数据

    向sqlite数据库插入和读取图片数据 (for ios) 假定数据库中存在表 test_table(name,image), 下面代码将图片文件test.png的二进制数据写到sqlite数据库: ...

  3. sqlite3的图片的(二进制数据)存取操作

    sqlite3的图片的(二进制数据)存取操作   前言 上篇介绍了sqlite3的一些常用插入操作方法和注意事项,在实际项目中遇到了图片缓存的问题,由于服务器不是很稳定,且受到外界环境的干扰(例如断电 ...

  4. 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  5. 纠错:基于FPGA串口发送彩色图片数据至VGA显示

    今天这篇文章是要修改之前的一个错误,前面我写过一篇基于FPGA的串口发送图片数据至VGA显示的文章,最后是显示成功了,但是显示的效果图,看起来确实灰度图,当时我默认我使用的MATLAB代码将图片数据转 ...

  6. ABP开发框架前后端开发系列---(14)基于Winform的ABP快速开发框架

    前面介绍了很多ABP系列的文章,一步一步的把我们日常开发中涉及到的Web API服务构建.登录日志和操作审计日志.字典管理模块.省份城市的信息维护.权限管理模块中的组织机构.用户.角色.权限.菜单等内 ...

  7. 如何快速开发基于Winform的应用系统

    在我们实际业务开发中,从头开发一个应用系统,不管是基于BS的前端项目,还是基于Winform的CS应用系统,都是由容易到复杂,逐步演化的一个开发过程,如果我们基于一定基础上,并配合一些配套的开发工具, ...

  8. 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  9. 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

随机推荐

  1. 【转】ARM交叉编译工具链

    原文网址:http://www.veryarm.com/cross-tools 为什么要用交叉编译器? 交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台( ...

  2. hadoop1.2.1+hbase0.90.4+nutch2.2.1+elasticsearch0.90.5配置(伪分布式)

    系统:ubuntu14.04 一.hadoop安装 ssh免密码登陆详情见上一篇博客. 解压hadoop1.2.1到某个目录下,这里解压到ubuntu下载目录下(注意没必要使用管理员权限) 在hado ...

  3. ExtJS+ASP.NET自己定义曲线

    第一步:创建Store数据源 var myData = []; myData.push({ 'name': '1', 'Oil_Production': '30', 'Water_Injection' ...

  4. 使用disqus搭建comment时一件非常二的事

    近期在github 上面搭建自己的博客,搭建comment部分的时候出现了一个问题:配置都配置好了,可是comment就是不成功.昨天为这个问题折腾了了半晚上没找出原因,今天晚上我突然发现一个地方设置 ...

  5. RehHat enterprise 5.4 安装git

    今天想来研究一下git,就自己安装一个试试,没想到遇到各种问题.经过各种百度和google,终于都解决了,现在来总结一下: 1.安装完redhat 5.4,安装gcc编译器的问题:这个gcc编译器需要 ...

  6. centos7命令行与图形界面启动模式修改

    1.命令启动 systemctl set-default multi-user.target 2.图形界面模式 systemctl set-default graphical.target

  7. 疯狂Android第二章:Adapter以及部分控件使用

    第二章 重点:1.理解View以及各种布局的优缺点,适用场景. 2.熟练掌握adapter原理与用法. 3.熟悉其它控件的基本使用方法. /////////////////////////////// ...

  8. 基于实际项目的SQL学习总结

    青云   随笔 - 2, 文章 - 0, 评论 - 1, 引用 - 0 一个项目涉及到的50个Sql语句(整理版) /* 标题:一个项目涉及到的50个Sql语句(整理版) 说明:以下五十个语句都按照测 ...

  9. Maximum Subarray (JAVA)

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  10. 图的深度优先遍历的实现 c/c++ DFS

    #include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h&g ...