基于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、运行效果图
基于winform的二进制图片数据的存取(用于数据库照片的读写处理)的更多相关文章
- Asp .net core api+Entity Framework 实现数据的存取到数据库中
最近在学dotNetCore 所以尝试了一下api 这个功能 不多说了大致实现如下 1.用vs2017建立一个Asp.net Core Web 应用程序 在弹出的对话框中选择 Web API 项目名 ...
- ios 向sqlite数据库插入和读取图片数据
向sqlite数据库插入和读取图片数据 (for ios) 假定数据库中存在表 test_table(name,image), 下面代码将图片文件test.png的二进制数据写到sqlite数据库: ...
- sqlite3的图片的(二进制数据)存取操作
sqlite3的图片的(二进制数据)存取操作 前言 上篇介绍了sqlite3的一些常用插入操作方法和注意事项,在实际项目中遇到了图片缓存的问题,由于服务器不是很稳定,且受到外界环境的干扰(例如断电 ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- 纠错:基于FPGA串口发送彩色图片数据至VGA显示
今天这篇文章是要修改之前的一个错误,前面我写过一篇基于FPGA的串口发送图片数据至VGA显示的文章,最后是显示成功了,但是显示的效果图,看起来确实灰度图,当时我默认我使用的MATLAB代码将图片数据转 ...
- ABP开发框架前后端开发系列---(14)基于Winform的ABP快速开发框架
前面介绍了很多ABP系列的文章,一步一步的把我们日常开发中涉及到的Web API服务构建.登录日志和操作审计日志.字典管理模块.省份城市的信息维护.权限管理模块中的组织机构.用户.角色.权限.菜单等内 ...
- 如何快速开发基于Winform的应用系统
在我们实际业务开发中,从头开发一个应用系统,不管是基于BS的前端项目,还是基于Winform的CS应用系统,都是由容易到复杂,逐步演化的一个开发过程,如果我们基于一定基础上,并配合一些配套的开发工具, ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
随机推荐
- D-Separation(D分离)
是属于 Bayesian network 中的概念
- 清除mac上安装软件的用户信息
有时候在mac系统上安装了一些软件后,尽管你将该软件卸载之后,可是原来的登录信息依然存在, 那么你就可以到下面的这个目录中查看一下,是否残留有信息文件.
- UILabel Text 加下划线
.h文件 #import <Foundation/Foundation.h> @interface CustomLabel : UILabel { BOOL _isEnabled; } @ ...
- 俄罗斯方块:win32api开发
本文简述一门课程,演示win32api开发俄罗斯方块的开发过程.如果学生学习过C语言,没学过或者学习C++不好,刚刚開始学习win32api程序设计,还不懂消息循环和注冊窗体类. 近期的照片在这里 ...
- winform —— 对话框和流及打印
对话框: 注意引用using System.IO; showdialog();显示对话框,返回一个dialogresult的枚举类型 colorDialog:color属性,用来获取颜色 folde ...
- 【27前端】在线css三角
我们都知道利用css边框的属性可以画出三角形,这里为了方便,我做了一个简单的demo页面供大家使用. 在线css三角
- 让资源可以下载a
第一种方式------不存在任何兼容性 <a href='x.zip'>下载</a> 将要链接的资源进行打包即可 第二种方式----存在兼容性,目前只有Chrome 和Fire ...
- js库开发--参数传递及方法修改
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- jdbc读取数据库图片文件
package 读取大文件.read; import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.I ...
- HDU 4798 - Skycity
告诉你一幢楼的高度,楼的层数,每层一样高. 每一层的底边是一个圆,下一层的玻璃一定要包括进上一层的底边. 每层玻璃铺成棱柱形,玻璃有最小面积限制. 问你这层楼最小的总玻璃数是多少. 求出每层最小的玻璃 ...