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. OC 属性关键字

    // 属性关键字 /* 1.ARC下(自动管理内存,自动引用计数)(IOS) strong,weak ----------------------------------------- 2.MRC下( ...

  2. node -- hapi 学习

    node learning 学习node,是为了后续项目可以正常开展,现在写个项目,若不是连接后台,请求数据,一切都不叫着项目了.正好借助掘金的小册,来推进学习 学习资料 YouTube 1 掘金 h ...

  3. learning uboot distro design in am335x-evm board

    reference: uboot_dir/doc/README.distro Linux distributions are faced with supporting a variety of bo ...

  4. harbor私有镜像仓库的搭建与使用与主从复制

    harbor私有镜像仓库,私有仓库有两种,一种是harbor,一种是小型的私有仓库,harbor有两种模式,一种是主 从,一种是高可用仓库,项目需求,需要两台服务器,都有docker.ldap权限统一 ...

  5. win764位下mysql-5.6.24-x64从安装到登录成功

    1.安装 本人电脑win7,64位,需要安装mysql服务器.版本:mysql-5.6.24-x64.这里我用的是绿色版,免安装.由于免安装的原因,在服务里面并没有mysql的服务.这里我需要打开my ...

  6. Delphi XE Starter Essentials 中文目录

    Table of Contents1. Delphi XE Starter IDE 1Delphi and C++Builder ................................... ...

  7. java 引用传递和值传递

    1.为什么要分值传递和引用传递: 基本类型存在在栈中,复合类型(对象)存在堆中.操作栈的速度要快于堆,且对象的复制相比基本类型不仅浪费内存而且速度比较慢. 从这里就可以看出来:对象是按照引用传递(数据 ...

  8. 【转】Linux编程之UDP SOCKET全攻略

    转自:http://www.cnblogs.com/skyfsm/p/6287787.html?utm_source=itdadao&utm_medium=referral 这篇文章将对lin ...

  9. mongo长连接

    php mongoclient默认都是长连接 mongo close方法可以关闭长连接 redis,mysql 短连接和长连接可选 他们的close方法都不可以关闭长连接

  10. 软件工程——Word-Counter

    Python实现Word-Counter 一.前言 Github地址:https://github.com/hzquestion/Word-Counter 二.项目概述 实现一个统计程序,它能正确统计 ...