c# mysql varbinary_数据库中用varbinary存储二进制数据
问题描述:将图片、二进制文件内容等数据存储在数据库中,并能从数据库中取出还原为图片或文件,数据库存储二进制数据用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存储二进制数据相关推荐
- mysql blob longblob_MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
<MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)>要点: 本文介绍了MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理 ...
- 《MySQL系列-开发相关》MySQL新建数据库表并存储2010年到2030年的日期
MySQL新建数据库表并存储2010年到2030年的日期 一.建表 CREATE TABLE `datetime` (`id` int(10) NOT NULL AUTO_INCREMENT,`dat ...
- mysql单价乘以数量_数据库字段中存储的数据数量乘以不同单价的和的算法示例...
数据库字段中存储的数据数量乘以不同单价的和的算法,适用于记账本程序的计件数据记录,和商品记录等场景. 代码示例如下: //模拟数据库结果集 $arr = array( array( "id& ...
- wxWidgets随笔(9)-utf8~wxString存储二进制数据(4)
使用wxString存储二进制数据 可以使用函数wxString::To8BitData和wxString::From8BitData来存储二进制数据(即使它包含空值). 注意,即使允许使用NUL字符 ...
- C++ MySQL存储二进制数据、存储照片
版权声明:本文为CSDN博主「intfre」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/nibiru_ho ...
- mongodb存储二进制数据的二种方式——binary bson或gridfs
python 版本为2.7 mongodb版本2.6.5 使用mongodb存储文件,可以使用两种方式,一种是像存储普通数据那样,将文件转化为二进制数据存入mongodb,另一种使用gridfs,咱们 ...
- 用数组存储二进制数据
有时候程序引用了多个资源文件,但是希望交付给用户的是单个可执行文件,那么就需要把资源文件打包到可执行文件中,一个简单的做法是这样的. 使用 xxd 工具将二进制文件转换成 unsigned char ...
- mysql中long_在Mysql中用 LONGBLOB 类型存储二进制数据
//需要设置为你自己的 //在DBMS中线要创建数据库test,table bintest,data字段数据类型用LONGBLOB即可测试 //测试文件c:\\test.iso,你可以找任何一个文件修 ...
- mysql longblob_Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
在DBMS中线要创建数据库test,table bintest,data字段数据类型用LONGBLOB即可测试 //测试文件c:\\test.iso,你可以找任何一个文件修改为即可,我找的是一个exe ...
- mysql longblob,Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
在DBMS中线要创建数据库test,table bintest,data字段数据类型用LONGBLOB即可测试 //测试文件c:\\test.iso,你可以找任何一个文件修改为即可,我找的是一个exe ...
最新文章
- 各类web服务器 http access log获取用户和代理ip
- python处理时间加减
- success for advertisement
- 2015年10月15日学习html基础笔记
- 超干货!为了让你彻底弄懂MySQL事务日志,我通宵肝出了这份图解!
- sql int 比较_分享 21 个编写 SQL 的好习惯
- 在ecshop商品详情页显示供货商
- 学渣的逆袭(各种暴力~)
- 寻找复活节彩蛋egg huting 学习
- 哈夫曼树(二)之 C++详解
- excel的IRR函数中的预估值有什么用
- 搜狗浏览器安装第三方插件(crx和zip)
- Could not start AVD
- 如何将IE浏览器设置为默认浏览器
- 树莓派配置文件 config.txt - HDMI 热插拔
- 蓄水池抽样LeetCode
- spacedesk-把ipad变成显示器-真香经验全面分享
- Surciata源码分析之IpsNFQ模式(1)
- python 读取文件去除回车
- 国外设计公司H5网站模板
热门文章
- 计算机会计报表管理,职称计算机考试用友财务教程:会计报表子系统的主要功能...
- 十四步实现拥有强大AI的五子棋游戏
- 几款Web服务器性能压力测试工具
- C:\Users\xx\.xxxxxx\system\tomcat\xxx\work\Catalina\localhost\ROOT(系统找不到指定文件)
- cad迷你看图免费版|cad迷你看图电脑版免费版下载 v2019R8
- 保存的离线网页总是自动跳转
- 【神经网络】LSTM理论介绍
- 查看计算机桌面隐藏文件夹,电脑怎么查看隐藏文件(隐藏文件夹显示方法)
- matlab leslie模型,【2017年整理】leslie人口增长模型模型.doc
- 二阶差分方程预测模型matlab程序,差分方程预测模型.doc