问题描述:将图片、二进制文件内容等数据存储在数据库中,并能从数据库中取出还原为图片或文件,数据库存储二进制数据用varbinary字段。

分析:由于之前数据库中没有用过varbinary存储数据,首先要把varbinary搞懂了,其次就是图片类型与二进制类型之间的转换,文件类型与二进制类型之间的转换。

准备工作:

1.varbinary 与 binary的区别:

固定长度 (binary) 的或可变长度 (varbinary) 的 binary 数据类型。

binary [ ( n ) ]

固定长度的 n 个字节二进制数据。N 必须从 1 到 8,000。存储空间大小为 n+4 字节。

varbinary [ ( n ) ]

n 个字节变长二进制数据。n 必须从 1 到 8,000。存储空间大小为实际输入数据长度 +4 个字节,而不是 n 个字节。输入的数据长度可能为 0 字节。在 SQL-92 中 varbinary 的同义词为 binary varying。注释:如果在数据定义或变量声明语句中没有指定 n,默认长度为 1。如果没有用 CAST 函数指定 n,默认长度为 30。

2.由于使用了MVC结构,生成Model类的时候竟然不知道其对应类型,网上搜也没有结果,首先用了一个System.Data.SqlTypes.SqlBytes,后来误打误撞才发现竟然就是byte[]类型。

实现示例:

//1.首先将图片装换成字节数组

Bitmap btm = new Bitmap("C:/Users/Desktop/1.jpg");

MemoryStream ms= newMemoryStream();

btm.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);byte[] bytes =ms.GetBuffer();//byte[] bytes= ms.ToArray(); 这两句都可以

ms.Close();try{//2.往数据库里写图片数据//先打开两个类库文件

SqlConnection con = newSqlConnection();

con.ConnectionString= "server=.;database=Test;uid=sa;pwd=123456";

con.Open();

SqlCommand com= newSqlCommand();

com.Connection=con;

com.CommandType=CommandType.Text;

com.CommandText= "insert into Map(Id,BitmapData) values(1,@photo)";

com.Parameters.AddWithValue("@photo", bytes);

SqlDataReader dr= com.ExecuteReader();//执行SQL语句

dr.Close();//关闭执行

con.Close();//关闭数据库//3.从数据库中取图片数据并显示

SqlConnection con = newSqlConnection();

con.ConnectionString= "server=.;database=Test;uid=sa;pwd=123456";

String sql= "select * from Map where Id=1";

SqlCommand cmd= newSqlCommand(sql, con);

con.Open();using (SqlDataReader dr =cmd.ExecuteReader())

{if(dr.Read()){if (!dr.IsDBNull(1))//防止照片字段为空

{

System.Data.SqlTypes.SqlBytes dataBytes= dr.GetSqlBytes(1);

Image imge= Image.FromStream(dataBytes.Stream);//显示照片

pb.ImageLocation = null;

pb.Image= null;

pb.Image=imge;

}

}

}

con.Close();//关闭数据库

}catch(Exception)

{throw;

}

上述为测试示例,没有直接取byte[]类型,如果要转化成byte[]类型,可以用如下方法:

byte[] b=dr.GetSqlBytes(1).Value;

byte[] b1 = dr.GetSqlBytes(1).Buffer;

c# mysql varbinary_数据库中用varbinary存储二进制数据相关推荐

  1. mysql blob longblob_MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)

    <MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)>要点: 本文介绍了MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理 ...

  2. 《MySQL系列-开发相关》MySQL新建数据库表并存储2010年到2030年的日期

    MySQL新建数据库表并存储2010年到2030年的日期 一.建表 CREATE TABLE `datetime` (`id` int(10) NOT NULL AUTO_INCREMENT,`dat ...

  3. mysql单价乘以数量_数据库字段中存储的数据数量乘以不同单价的和的算法示例...

    数据库字段中存储的数据数量乘以不同单价的和的算法,适用于记账本程序的计件数据记录,和商品记录等场景. 代码示例如下: //模拟数据库结果集 $arr = array( array( "id& ...

  4. wxWidgets随笔(9)-utf8~wxString存储二进制数据(4)

    使用wxString存储二进制数据 可以使用函数wxString::To8BitData和wxString::From8BitData来存储二进制数据(即使它包含空值). 注意,即使允许使用NUL字符 ...

  5. C++ MySQL存储二进制数据、存储照片

    版权声明:本文为CSDN博主「intfre」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/nibiru_ho ...

  6. mongodb存储二进制数据的二种方式——binary bson或gridfs

    python 版本为2.7 mongodb版本2.6.5 使用mongodb存储文件,可以使用两种方式,一种是像存储普通数据那样,将文件转化为二进制数据存入mongodb,另一种使用gridfs,咱们 ...

  7. 用数组存储二进制数据

    有时候程序引用了多个资源文件,但是希望交付给用户的是单个可执行文件,那么就需要把资源文件打包到可执行文件中,一个简单的做法是这样的. 使用 xxd 工具将二进制文件转换成 unsigned char ...

  8. mysql中long_在Mysql中用 LONGBLOB 类型存储二进制数据

    //需要设置为你自己的 //在DBMS中线要创建数据库test,table bintest,data字段数据类型用LONGBLOB即可测试 //测试文件c:\\test.iso,你可以找任何一个文件修 ...

  9. mysql longblob_Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)

    在DBMS中线要创建数据库test,table bintest,data字段数据类型用LONGBLOB即可测试 //测试文件c:\\test.iso,你可以找任何一个文件修改为即可,我找的是一个exe ...

  10. mysql longblob,Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)

    在DBMS中线要创建数据库test,table bintest,data字段数据类型用LONGBLOB即可测试 //测试文件c:\\test.iso,你可以找任何一个文件修改为即可,我找的是一个exe ...

最新文章

  1. 各类web服务器 http access log获取用户和代理ip
  2. python处理时间加减
  3. success for advertisement
  4. 2015年10月15日学习html基础笔记
  5. 超干货!为了让你彻底弄懂MySQL事务日志,我通宵肝出了这份图解!
  6. sql int 比较_分享 21 个编写 SQL 的好习惯
  7. 在ecshop商品详情页显示供货商
  8. 学渣的逆袭(各种暴力~)
  9. 寻找复活节彩蛋egg huting 学习
  10. 哈夫曼树(二)之 C++详解
  11. excel的IRR函数中的预估值有什么用
  12. 搜狗浏览器安装第三方插件(crx和zip)
  13. Could not start AVD
  14. 如何将IE浏览器设置为默认浏览器
  15. 树莓派配置文件 config.txt - HDMI 热插拔
  16. 蓄水池抽样LeetCode
  17. spacedesk-把ipad变成显示器-真香经验全面分享
  18. Surciata源码分析之IpsNFQ模式(1)
  19. python 读取文件去除回车
  20. 国外设计公司H5网站模板

热门文章

  1. 计算机会计报表管理,职称计算机考试用友财务教程:会计报表子系统的主要功能...
  2. 十四步实现拥有强大AI的五子棋游戏
  3. 几款Web服务器性能压力测试工具
  4. C:\Users\xx\.xxxxxx\system\tomcat\xxx\work\Catalina\localhost\ROOT(系统找不到指定文件)
  5. cad迷你看图免费版|cad迷你看图电脑版免费版下载 v2019R8
  6. 保存的离线网页总是自动跳转
  7. 【神经网络】LSTM理论介绍
  8. 查看计算机桌面隐藏文件夹,电脑怎么查看隐藏文件(隐藏文件夹显示方法)
  9. matlab leslie模型,【2017年整理】leslie人口增长模型模型.doc
  10. 二阶差分方程预测模型matlab程序,差分方程预测模型.doc