zoukankan      html  css  js  c++  java
  • 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字段中

    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.   
    14.         cmd.Parameters[0].Value = 15;  
    15.         cmd.Parameters[1].Value = bytes;  
    16.         cmd.Connection = conn;  
    17.         conn.Open();  
    18.   
    19.         int affectedrows = cmd.ExecuteNonQuery();  
    20.   
    21.         cmd.Dispose();//此处可以不用调用,  
    22.         conn.Close();// 离开 using 块, connection 会自行关闭  
    23.     }  
    24. }  
     

    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.   
    8.         MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();  
    9.         cmd.CommandType = CommandType.Text;  
    10.         cmd.CommandText = "select id,picture from test where id = 11";  
    11.         cmd.Connection = conn;  
    12.   
    13.         System.Data.Common.DbDataReader reader = cmd.ExecuteReader();  
    14.         byte[] buffer = null;  
    15.         if (reader.HasRows)  
    16.         {  
    17.             reader.Read();  
    18.             long len = reader.GetBytes(1, 0, null, 0, 0);//1是picture  
    19.             buffer = new byte[len];  
    20.             len = reader.GetBytes(1, 0, buffer, 0, (int)len);  
    21.   
    22.             System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer);  
    23.             System.Drawing.Image iamge = System.Drawing.Image.FromStream(ms);  
    24.             pictureBox1.Image = iamge;  
    25.         }  
    26.     }  
    27. }  
     

    数据库相关文件配置在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

  • 相关阅读:
    vuex
    koa2+node+vue自启服务运行本地脚本
    重新认识js(一)
    JQuery图片左右无缝滚动
    javascript兼容性很好的省市区联动,易修改
    JQuery超级简单的TAB选项卡
    ViewState的原理分析
    JQuery图片切换特效
    asp.net验证控件详解【转】
    时间线 制作
  • 原文地址:https://www.cnblogs.com/xihong2014/p/4196154.html
Copyright © 2011-2022 走看看