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字段中

  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. byte[] bytes = null;
  4. bytes = File.ReadAllBytes(@"C:/Documents and Settings/user/My Documents/My Pictures/11.jpg");
  5. using (MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection())
  6. {
  7. conn.ConnectionString = ConfigurationManager.ConnectionStrings["test"].ConnectionString;
  8. MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
  9. cmd.CommandText = "insert into test(id,picture) values(@id,@picture)";
  10. cmd.CommandType = CommandType.Text;
  11. cmd.Parameters.Add("@id", MySql.Data.MySqlClient.MySqlDbType.Int32);
  12. cmd.Parameters.Add("@picture", MySql.Data.MySqlClient.MySqlDbType.Blob);
  13. cmd.Parameters[0].Value = 15;
  14. cmd.Parameters[1].Value = bytes;
  15. cmd.Connection = conn;
  16. conn.Open();
  17. int affectedrows = cmd.ExecuteNonQuery();
  18. cmd.Dispose();//此处可以不用调用,
  19. conn.Close();// 离开 using 块, connection 会自行关闭
  20. }
  21. }
 

2、读取此BLOB字段,将其转化为图片显示在Picturebox控件上

  1. private void button2_Click(object sender, EventArgs e)
  2. {
  3. using (MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection())
  4. {
  5. conn.ConnectionString = ConfigurationManager.ConnectionStrings["test"].ConnectionString;
  6. conn.Open();
  7. MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
  8. cmd.CommandType = CommandType.Text;
  9. cmd.CommandText = "select id,picture from test where id = 11";
  10. cmd.Connection = conn;
  11. System.Data.Common.DbDataReader reader = cmd.ExecuteReader();
  12. byte[] buffer = null;
  13. if (reader.HasRows)
  14. {
  15. reader.Read();
  16. long len = reader.GetBytes(1, 0, null, 0, 0);//1是picture
  17. buffer = new byte[len];
  18. len = reader.GetBytes(1, 0, buffer, 0, (int)len);
  19. System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer);
  20. System.Drawing.Image iamge = System.Drawing.Image.FromStream(ms);
  21. pictureBox1.Image = iamge;
  22. }
  23. }
  24. }
 

数据库相关文件配置在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字段 (转帖)的更多相关文章

  1. MYSQL BLOB 字段大小以及个数的限制測试。

    測试结论 mysql版本号 5.1     表类型: innodb, row_format=compact (这是默认的行格式)     插入超过10个blob, blob的数据量非常小(<76 ...

  2. SpringMVC处理MySQL BLOB字段的下载

    任务: uos.docfile的content字段是longblob类型,通过Web点击链接能下载到存储在这个字段里的文件.Web点击链接类似如下形式: http://localhost:8080/d ...

  3. SpringMVC处理MYSQL BLOB字段的上传

    任务: uos.docfile的content字段是longblob类型的,通过页面将文件存储到这个字段里. 页面代码: <div class="box"> <d ...

  4. mysql BLOB字段转String的方法

    1.通过sql直接转换 select CONVERT(GROUP_CONCAT(XXX) USING utf8 from usertable; 2.通过程序转换(注:本例用的是springmvc包装并 ...

  5. java 读写Oracle Blob字段

    许久没有分享代码了,把这段时间写的一个Java操作Blob字段,有日子没写Java了,就当作笔记记录一下.1. [代码][Java]代码     跳至 [1] [全屏预览]package com.wa ...

  6. wpf读取mysql字段类型为text的问题

    在读取数据库中的字段时,可能会根据环境的不同导致一些字段的读取方式不尽相同,在sql数据库中读取字段值用的最多的算是dataTable.Rows[行][列],但是到了mysql中就会有一些差别,在fl ...

  7. 关于C#读取MySql数据时,返回DataTable中某字段数据是System.Array[]形式

    我在使用C#(VS2008)读取MySql数据库(5.1版本)时,返回的DataTable数据中arrivalDate字段数据显示为System.Array[]形式(程序中没有对返回的数据进行任何加工 ...

  8. java读取mysql表的注释及字段注释

    /** * 读取mysql某数据库下表的注释信息 * * @author xxx */ public class MySQLTableComment { public static Connectio ...

  9. MySQL中TEXT与BLOB字段类型的区别

    这篇文章主要介绍了MySQL中TEXT与BLOB字段类型的区别,本文总结了6大区别,需要的朋友可以参考下   在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程 ...

随机推荐

  1. MVC 模式——第3章

    在深入到 ASP.NET MVC 框架的细节之间,最好熟悉 MVC 的设计模式及其背后的思想.良好地理解 MVC 背后的内容,有助于在阅读本书的过程中将该框架的特性放到相关的情境之中. 3.2 理解 ...

  2. 78. Subsets 90. Subsets II

    1. Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset m ...

  3. MyBatis:4

    转载:http://www.cnblogs.com/xrq730/p/5289638.html 什么是动态SQL MyBatis的一个强大特性之一通常是它的动态SQL能力.如果你有使用JDBC或其他相 ...

  4. Intel DAAL AI加速 ——传统决策树和随机森林

    # file: dt_cls_dense_batch.py #===================================================================== ...

  5. 用 Spark 为 Elasticsearch 导入搜索数据

    越来越健忘了,得记录下自己的操作才行! ES和spark版本: spark-1.6.0-bin-hadoop2.6 Elasticsearch for Apache Hadoop 2.1.2 如果是其 ...

  6. 标准库头文件 (CA2T)

    标准库中,CA2T,CA2W的头文件是: #include <atlstr.h>

  7. 禁止一个click事件执行的方法

    用jquery点击一次之后,在里面给这个元素加上这个样式,就可以了. 'pointer-events':'none'

  8. CLIENT_0004:Unable to find valid Kerberos ticket cache (kinit)

    背景 今天在使用JavaAPI来连接sqoop1.99.7的时候,遇到了个错误. 错误信息如下: 0 [main] WARN org.apache.hadoop.util.NativeCodeLoad ...

  9. JDBCTemplate使用

    业务上,手机App(离线状态下的数据),在在线的时候需要往服务端上传,由于App上的SQLite数据库里的需要 同步数据的表 跟服务端的数据库表结构一致,所以为了同步数据的方便性,我们决定App在进行 ...

  10. 基于VUE2.0的分页插件(很好用,很简单)

    基于jQuery的分页插件很多,今天分享一下基于Vue的分页插件pagination.js,该插件使用用感觉很不错,简单不复杂,现将个人使用过程中的方法与遇到的问题以及实例分享出来. 下载解压的主要目 ...