C#读取Mysql blob字段 (转帖)
http://blog.csdn.net/config_man/article/details/6123191
开发环境:Windows XP Professional SP3、VS2008、Winform、MySQL5.0、MySQL.Data.dll 6.2.3.0
1、从硬盘上读取一图片,将其转化为流,然后存储到此BLOB字段中
- private void button1_Click(object sender, EventArgs e)
- {
- byte[] bytes = null;
- bytes = File.ReadAllBytes(@"C:/Documents and Settings/user/My Documents/My Pictures/11.jpg");
- using (MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection())
- {
- conn.ConnectionString = ConfigurationManager.ConnectionStrings["test"].ConnectionString;
- MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
- cmd.CommandText = "insert into test(id,picture) values(@id,@picture)";
- cmd.CommandType = CommandType.Text;
- cmd.Parameters.Add("@id", MySql.Data.MySqlClient.MySqlDbType.Int32);
- cmd.Parameters.Add("@picture", MySql.Data.MySqlClient.MySqlDbType.Blob);
- cmd.Parameters[0].Value = 15;
- cmd.Parameters[1].Value = bytes;
- cmd.Connection = conn;
- conn.Open();
- int affectedrows = cmd.ExecuteNonQuery();
- cmd.Dispose();//此处可以不用调用,
- conn.Close();// 离开 using 块, connection 会自行关闭
- }
- }
2、读取此BLOB字段,将其转化为图片显示在Picturebox控件上
- private void button2_Click(object sender, EventArgs e)
- {
- using (MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection())
- {
- conn.ConnectionString = ConfigurationManager.ConnectionStrings["test"].ConnectionString;
- conn.Open();
- MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
- cmd.CommandType = CommandType.Text;
- cmd.CommandText = "select id,picture from test where id = 11";
- cmd.Connection = conn;
- System.Data.Common.DbDataReader reader = cmd.ExecuteReader();
- byte[] buffer = null;
- if (reader.HasRows)
- {
- reader.Read();
- long len = reader.GetBytes(1, 0, null, 0, 0);//1是picture
- buffer = new byte[len];
- len = reader.GetBytes(1, 0, buffer, 0, (int)len);
- System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer);
- System.Drawing.Image iamge = System.Drawing.Image.FromStream(ms);
- pictureBox1.Image = iamge;
- }
- }
- }
数据库相关文件配置在App.config中,如果不用配置文件,可以写成:
string remote = "Persist Security Info=False;database=数据库名;server=服务器IP;user id=用户名;pwd=密码";
然后conn.ConnectionString = remote;即可。
后记:
之前在.net中用的mysql库是:MySQLDriverCS,但是一直没有搞定,而且用官方给的读取blob字段也失败。于是改用MySql.Data.dll ,注意Mysql.Data5.0版本不支持读取Blob字段,所以需要用较高版本,我用的是MySQL.Data.dll 6.2.3.0。
MySql.Data.dll 6.2.3.0下载地址:http://download.csdn.net/source/2968152
MySql.Data.dll 5.0.9.0下载地址:http://download.csdn.net/source/2968157
C#读取Mysql blob字段 (转帖)的更多相关文章
- MYSQL BLOB 字段大小以及个数的限制測试。
測试结论 mysql版本号 5.1 表类型: innodb, row_format=compact (这是默认的行格式) 插入超过10个blob, blob的数据量非常小(<76 ...
- SpringMVC处理MySQL BLOB字段的下载
任务: uos.docfile的content字段是longblob类型,通过Web点击链接能下载到存储在这个字段里的文件.Web点击链接类似如下形式: http://localhost:8080/d ...
- SpringMVC处理MYSQL BLOB字段的上传
任务: uos.docfile的content字段是longblob类型的,通过页面将文件存储到这个字段里. 页面代码: <div class="box"> <d ...
- mysql BLOB字段转String的方法
1.通过sql直接转换 select CONVERT(GROUP_CONCAT(XXX) USING utf8 from usertable; 2.通过程序转换(注:本例用的是springmvc包装并 ...
- java 读写Oracle Blob字段
许久没有分享代码了,把这段时间写的一个Java操作Blob字段,有日子没写Java了,就当作笔记记录一下.1. [代码][Java]代码 跳至 [1] [全屏预览]package com.wa ...
- wpf读取mysql字段类型为text的问题
在读取数据库中的字段时,可能会根据环境的不同导致一些字段的读取方式不尽相同,在sql数据库中读取字段值用的最多的算是dataTable.Rows[行][列],但是到了mysql中就会有一些差别,在fl ...
- 关于C#读取MySql数据时,返回DataTable中某字段数据是System.Array[]形式
我在使用C#(VS2008)读取MySql数据库(5.1版本)时,返回的DataTable数据中arrivalDate字段数据显示为System.Array[]形式(程序中没有对返回的数据进行任何加工 ...
- java读取mysql表的注释及字段注释
/** * 读取mysql某数据库下表的注释信息 * * @author xxx */ public class MySQLTableComment { public static Connectio ...
- MySQL中TEXT与BLOB字段类型的区别
这篇文章主要介绍了MySQL中TEXT与BLOB字段类型的区别,本文总结了6大区别,需要的朋友可以参考下 在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程 ...
随机推荐
- OncePerRequestFilter的作用
在spring中,filter都默认继承OncePerRequestFilter,但为什么要这样呢? OncePerRequestFilter顾名思义,他能够确保在一次请求只通过一次filter,而不 ...
- 浅析postgresql数据库事务及行锁特征
开源数据库领域,postgresql以其优越的性能.功能及良好的稳定性排名首位可谓当之无愧,尤其是对高并发的支持可谓匠心独具.而优越的性能和稳定性,究其根本无非是良好的基础架构,本文将对其性能和稳定性 ...
- ES profile 性能优化用——返回各个shard的耗时
Profile API 都说要致富先修路,要调优当然需要先监控啦,elasticsearch在很多层面都提供了stats方便你来监控调优,但是还不够,其实很多情况下查询速度慢很大一部分原因是糟糕的查询 ...
- SQL基础用法(实例二)
/* 2006年10月01日 SQL Server 数据库的高级操作 (1) 批处理 (2) 变量 (3) 逻辑控制 (4) 视图 (5) 函数 (6) 高级查询 */ ()批处理 将多条SQL语句作 ...
- Using Fetch to rewrite JSON
截图如下: html代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"&g ...
- python 虚拟环境 pyenv
一.pyenv简介 pyenv 主要用来管理 Python 的版本,比如一个项目需要 Python 2.x ,一个项目需要 Python 3.x . pyenv 通过系统修改环境变量来实现 Pytho ...
- 一些java的部署执行编译等命令
编译: javac 参数 -d 指定编译后文件的位置 java 执行java文件 java生成jar文件 java执行jar文件 java生成war文件 war包是一种将web程序捆绑到单个文件上的一 ...
- 移动端 解决自适应 和 多种dpr (device pixel ratio) 的 [淘宝] 解决方案 lib-flexible
其实H5适配的方案有很多种,网上有关于这方面的教程也非常的多. 不管哪种方法,都有其自己的优势和劣势. 为什么推荐使用Flexible库来做H5页面的终端设备适配呢? 原理 简单易懂 源码疑问 ...
- define 常量的定义和读取
define(‘常量’,‘常量值’)----------------------define来定义常量, echo 也能输出常量, get_defined_constants(true)------- ...
- Axure使用笔记1:如何去除IE中每次“已限制网页运行脚本或ActiveX控件”
每次在Axure中画原型预览的时候,IE每次都有 这个比较烦,在Internent做如下设置,即可不再烦恼 看到没,给允许活动内容在我的计算机上的文件中运行打上勾