SQLserver C#将图片以二进制方式存储到数据库,再从数据库读出图片
一 存储到数据库
1、建立数据表UserPhoto
userID为varchar(50) 设置为标识列unique不能重复 alter table UserPhoto add unique(UserID)
photo为image
2、写一个类,主要有三个方法
(1)连接数据库的类ConnectionOpen()
(2)判断图片类型转换byte[]数组ImageToBytes(Image image)
(3)操作数据库将转换的二进制写进数据库
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace importImage
{class Class1{private SqlConnection ConnectionOpen(){string connectionString = "Server = 192.168.31.214; Database =Attendance; User ID = sa ; Password = dengrui2018;";SqlConnection conn = new SqlConnection(connectionString);conn.Open();return conn;}public static byte[] ImageToBytes(Image image){if (image == null){return null;}ImageFormat format = image.RawFormat;using (MemoryStream ms = new MemoryStream()){if (format.Equals(ImageFormat.Jpeg)){image.Save(ms, ImageFormat.Jpeg);}else if (format.Equals(ImageFormat.Png)){image.Save(ms, ImageFormat.Png);}else if (format.Equals(ImageFormat.Bmp)){image.Save(ms, ImageFormat.Bmp);}else if (format.Equals(ImageFormat.Gif)){image.Save(ms, ImageFormat.Gif);}else if (format.Equals(ImageFormat.Icon)){image.Save(ms, ImageFormat.Icon);}byte[] buffer = new byte[ms.Length];//Image.Save()会改变MemoryStream的Position,需要重新Seek到Beginms.Seek(0, SeekOrigin.Begin);ms.Read(buffer, 0, buffer.Length);return buffer;}}public bool InsertPerImage(string rowAutoID, Image perImage){SqlConnection conn = ConnectionOpen();int i = 0;if (perImage == null){SqlCommand com = new SqlCommand("insert into UserPhoto(UserID) values('100020')", conn);com.Parameters.Add("UserID", SqlDbType.VarChar);//数据库里userID是varchar,这里转换为varcharcom.Parameters["UserID"].Value = rowAutoID;i = com.ExecuteNonQuery();}else{SqlCommand com = new SqlCommand("insert into UserPhoto(UserID,photo) values(@UserID,@photo)", conn);com.Parameters.Add("UserID", SqlDbType.VarChar);com.Parameters["UserID"].Value = rowAutoID;com.Parameters.Add("photo", SqlDbType.Image);com.Parameters["photo"].Value = ImageToBytes(perImage);//调用方法将图片转换为二进制i = com.ExecuteNonQuery();//返回受影响的函数}if (i > 0){conn.Close();return true;}else{conn.Close();return false;}}}
}
3、调用方法
private void button5_Click(object sender, EventArgs e){Class1 c1 = new Class1();string id = "10002";//调用方法 传递两个参数 编号,图片的路径bool aa = c1.InsertPerImage(id, Image.FromFile(@"E:\ssdVS\项目\importImage\importImage\image\bananer.jpg"));MessageBox.Show(aa.ToString()); //如果返回为true 则添加成功}
二 从数据库获取二进制转换为图片
有空完善.....
SQLserver C#将图片以二进制方式存储到数据库,再从数据库读出图片相关推荐
- ORACLE使用copy方式存储迁移,详细讲解Oracle数据库的数据迁移方法
添加所需的表空间和用户到目标数据库中:安装所需的SQL*Net2或者Net8软件,并配置用于连接数据库的别名. 在DOS命令提示符下设置oracle_sid=Oracle7_sid. 以Interna ...
- python 图片和二进制转换的三种方式
PIL格式转二进制 先读取为PIL格式,再转为二进制 import io import base64 from PIL import Imagedef image2byte(image):'''图片转 ...
- 通过SharedPreferences方式存储复杂数据
我们可以通过SharedPreferences方式存储一些复杂的数据,如图片或类的存储,(当然,建议不要用这种方式存储)下面我们通过代码来学习: @Override public void onCre ...
- 将图片的二进制字节字符串在HTML页面以图片形式输出
具体实现代码如下: 1.新建一个一般处理程序: Image.ashx 1 using System; 2 using System.Collections.Generic; 3 using Syste ...
- mysql 图片转为二进制_如何把图片转换成二进制存入数据库
public static byte[] imgBytesIn;//用来存储图片的二进制 Stream ms; byte[] picbyte; //在创建数据库链接,测试链接成功后,在高级里可自动生成 ...
- python3图片转代码_python3图片转换二进制存入mysql示例代码
python3图片转换二进制存入mysql示例代码 发布于 2014-09-29 18:00:01 | 198 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面 ...
- python 图片与二进制之间的转换
一:PIL格式图片转成二进制 先读取为PIL格式,再转为二进制 import io import base64 from PIL import Imagedef image2byte(image):' ...
- GridView控件 Image控件 与图片的二进制数据库存储和显示
1.将图片以二进制存入数据库 2.读取二进制图片在页面显示 3.设置Image控件显示从数据库中读出的二进制图片 4.GridView中ImageField以URL方式显示图片 5.GridView显 ...
- BinaryReader 、BinaryWriter是方便用二进制方式读写int,double,string之类的数据
BinaryWriter类:MSDN以二进制形式将基元类型写入流,并支持用特定的编码写入字符串. 这个MSDN的解释,是不是说BinaryWriter类是将数据以二进制的形式写入文件,在文件中显示的是 ...
- web项目图片/文件保存方式
web项目图片/文件保存方式 其实文件和图片都是二进制流文件 以下统称图片 1直接把图片存到数据库字段中 2图片存项目/public/img目录,文件名存数据库字段 3规范的使用阿里云oss/腾讯云c ...
最新文章
- List Control Utility
- python threading condition使用_Python threading模块condition原理及运行流程详解
- UVa11292 - Dragon of Loowater(贪心)
- linux on android分区,linux分区笔记
- TF之CNN:利用sklearn(自带手写数字图片识别数据集)使用dropout解决学习中overfitting的问题+Tensorboard显示变化曲线
- 我从Team Leader变成了CTO,有些不适应,不过我要调整
- 序列化技术的选型-技术层面
- mysql geometry 附近的人_mysql中geometry类型的简单使用(搜索附近的人)
- GIT 自动转换行符的案例
- VRRP,HSRP介绍及配置
- EPPlus 读写 Excel 资料收集
- Go并发模式:管道与取消
- uni-app 开发微信小程序,网络断开,无网络情况,刷新检查,重新加载
- xp无法访问win7计算机,xp系统访问win7共享文件夹提示无权限如何解决
- (附源码)node.js基于vue框架潮牌官网设计与实现 毕业设计 010955
- top 和 window.top, iframe 默认高度
- 被遗忘的数学家!曾提出最接地气的数学定理,可以计算男朋友真不真心的那种......
- 在WPS表格里制作连接到openGauss的实时刷新报表
- 第四章 采购与供应链管理中的利益相关者
- (原创)添加QQ好友日期爬虫01——总体思路
热门文章
- 水印相机定位不准确怎么办_选好镜头 选好3D四轮定位仪
- 【数据分享】历次人口普查数据(一普到七普)
- 回文字符串,回文链表
- scala implicit隐式转化与隐式参数
- XSS_伪协议与编码绕过
- html怎么读取2进制视频,IE 中如何读取二进制文件的内容?
- 杭州师范大学计算机考研难度,杭州师范大学网络空间安全考研难吗
- php stacktrace,Laravel:如何在PhpUnit上启用stacktrace错误
- mod_rewrite模块的使用
- 插个队 leetcode 142. 环形链表 II