在C#开发应用程序的过程中,图片一般会存放在文件系统中,当然图片也可以二进制的方式存放到数据库中,不过一般不建议存放在数据库中,因为图片占用的空间还是挺大的,特殊情况下可以考虑将图片存在数据。此文将介绍如何将图片存放在Sqlserver数据库中,并从数据库中读取出图片信息。

在将图片存储到数据库之前,需要先设计数据库表,建议使用sqlserver的数据类型Image类型存储数据,当然也有人使用二进制binary类型存储。

一、将图片写入数据库中的方法

在此方法中使用到FileStream类,该类在此的作用是将图片读取到文件流中。具体实现方法如下:

 public void WriteImgToDb()
{
SqlConnection conn=new SqlConnection("server=.;database=pubs;trusted_connection=Yes");
conn.Open();
SqlCommand scmd = null;
string Path = Application.StartupPath + "//Imgren"; //为获取文件的根目录
int j = ;
FileStream fs=null;
for (int i = ; i <= ; i++) //利用循环添加一次添加图片
{
string sql = "insert into tb_Image values(@a,@b)"; //利用参数实现图片添加
scmd = new SqlCommand(sql, scon); scmd.Parameters.Add("@a", SqlDbType.Int);
scmd.Parameters["@a"].Value = i; //记住该方法,将值存入参数内 byte[] bt = new byte[]; //初始化图片大小
//创建图片写入流
fs = new FileStream(Path + "//" + i + ".bmp", FileMode.OpenOrCreate, FileAccess.Read);
fs.Read(bt, , bt.Length); //读取图片的字节数
scmd.Parameters.Add("@b", SqlDbType.Image, (int)fs.Length);
scmd.Parameters["@b"].Value = bt; //将图片的字节数存入参数内
j = scmd.ExecuteNonQuery();
}
if (j > )
MessageBox.Show("将图片写入数据库成功!!!", "友好提示");
else
MessageBox.Show("将图片写入数据库失败!!!", "友好提示");
fs.Close(); //关闭释放流资源
}

二、将从数据库中读取图片到picturebox控件中(WinForm窗体控件)。

此方法使用了MemoryStream类即内存流对象,同时使用了Image类,Image类是.NET Framework内部提供的图片相关类。从Sqlserver数据库中读取图片数据具体实现方法如下:

public void ReadDbImage()
{
SqlConnection conn=new SqlConnection("server=.;database=pubs;trusted_connection=Yes");
conn.Open();
SqlCommand scmd = null;
string sql = "select I_image from tb_image where I_id=" +int.Parse(textBox1.Text.Trim()) + "";
scmd = new SqlCommand(sql, scon);
SqlDataReader red = scmd.ExecuteReader();
if (red.Read())
{
//创建支持存储区的内存流
MemoryStream ms = new MemoryStream((byte[])red[]);
Image img = Image.FromStream(ms, true); //该方法: FromStream()为验证图像的流
this.pictureBox1.Image = img;
}
red.Close(); //关闭资源
}

扩展阅读:C#工具类:使用SharpZipLib进行压缩、解压文件微软官方提供的Sqlserver数据库操作帮助类SQLHelper类

备注:原文转载自C#将图片以二进制流的方式存入数据库_IT技术小趣屋

博主个人技术交流群:960640092,博主微信公众号如下:

【转载】C#将图片以二进制流的方式存入数据库的更多相关文章

  1. 【转载】C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte

    C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte 转载:http://www.itdos.com/Mvc/20150302/0741255.htm ...

  2. 【转载】C#将图片转换为二进制流调用

    在C#中可以使用MemoryStream类.BinaryFormatter类等来操作图片,将图片读取到二进制数据流中,最终转成二进制数据流进行调用,详细的实现如下方法所示. private byte[ ...

  3. CEF 自定义用户协议(scheme)实现以二进制流的方式显示图片、视频、音频

    转载:https://www.cnblogs.com/sinceret/p/10417941.html 转载:https://stackoverflow.com/questions/48811756/ ...

  4. php读取图片成二进制流输出

    header( "Content-type: image/jpeg");$PSize = filesize('1.jpg');$picturedata = fread(fopen( ...

  5. ASP.Net将图片以二进制方式存入数据库,并读取

    把图片转换成二进制--把二进制转换成图片 private void button1_Click(object sender, EventArgs e) { string path = this.tex ...

  6. python+ mysql存储二进制流的方式

    很多时候我们为了管理方便会把依稀很小的图片存入数据库,有人可能会想这样会不会对数据库造成很大的压力,其实大家可以不用担心,因为我说过了,是存储一些很小的图片,几K的,没有问题的! 再者,在这里我们是想 ...

  7. Python实现将图片以二进制格式保存到MySQL数据库中,以及取出:

    创建数据库表格式: CREATE TABLE photo ( photo_no int(6) unsigned NOT NULL auto_increment, image MEDIUMBLOB, P ...

  8. C#实现文件与二进制互转并存入数据库

    这篇文章主要介绍了C#实现文件与二进制互转并存入数据库,本文直接给出代码实例,代码中包含详细注释,需要的朋友可以参考下 //这个方法是浏览文件对象     private void button1_C ...

  9. Unity C#图片转换二进制流、字符串互转

    图片转二进制流转换图片互转 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...

随机推荐

  1. 用python实现文件自动上传

    一.简介 用python实现文件自动上传,主要源于在测试项目中想实现自动化上传文件功能,无须手工输入.比如从windows到Linux,或从Linux到windows,或从Linux到Linux. 主 ...

  2. vue2入坑随记(一)-- 初始全家桶

    都说Vue2简单,上手容易,但小马过河,自己试了才晓得,除了ES6语法和webpack的配置让你感到陌生,重要的是思路的变换,以前随便拿全局变量和修改dom的锤子不能用了,变换到关注数据本身.vue的 ...

  3. 使用 VSTS 进行 CI 的过程中,无法识别 .NET Core 2.x 的情况处理

    大概是由于 .NET Core 2.1 还没有正式发布,使用 VSTS 进行持续集成(CI)的过程中,自动 Build 的环节无法识别 .NET Core 2.1 的框架,查看日志会提示如下错误: V ...

  4. 关于git的reset指令说明-soft、mixed、hard

    在开发过程中,git的版本管理越来越普及.在版本管理中,最常用和最重要的是重置提交的版本,恢复后悔做了的事.大家都知道用reset命令.但是有几种形态需要整理共享一下,也方便我自己查阅. 一.首先解析 ...

  5. 感悟优化——Netty对JDK缓冲区的内存池零拷贝改造

    NIO中缓冲区是数据传输的基础,JDK通过ByteBuffer实现,Netty框架中并未采用JDK原生的ByteBuffer,而是构造了ByteBuf. ByteBuf对ByteBuffer做了大量的 ...

  6. Git使用详细教程(6):git mv重命名文件

    与使用git rm类似,Git还提供了重命名文件的命令git mv,我们可以通过该命令重命名文件. 如下图,git mv包含了以下动作

  7. 《http权威指南》读书笔记13

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  8. String字符串相加常见面试题

    String name1="jack"; String name2="jack"; System.out.println(name1==name2); // t ...

  9. 机器学习入门07 - 验证 (Validation)

    原文链接:https://developers.google.com/machine-learning/crash-course/validation/ 1- 检查直觉 将一个数据集划分为训练集和测试 ...

  10. Python - 调试Python代码的方法

    调试(debug) 将可疑环节的变量逐步打印出来,从而检查哪里是否有错. 让程序一部分一部分地运行起来.从核心功能开始,写一点,运行一点,再修改一点. 利用工具,例如一些IDE中的调试功能,提高调试效 ...