博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#读取Mysql blob字段 分类: .NET ...
阅读量:5277 次
发布时间:2019-06-14

本文共 2693 字,大约阅读时间需要 8 分钟。

开发环境: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下载地址:

MySql.Data.dll 5.0.9.0下载地址:

 

代码提供者:,在此深表感谢!

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/configman/archive/2011/01/07/4657604.html

你可能感兴趣的文章
vue项目中开启Eslint碰到的一些问题及其规范
查看>>
循环队列实现
查看>>
获取表单提交的数据getParameter()方法
查看>>
CSS层模型
查看>>
springBoot 项目 jar/war打包 并运行
查看>>
HDU 1501 Zipper
查看>>
打包java程序生成exe
查看>>
八叉树
查看>>
函数的返回是返回给实参,然后由实参输出,返回值的作用是给输出的全部变为变量然后用.=连接好把变量存进数据库而不是输出完屏幕就拉倒了...
查看>>
教你禁用右键,也教你如何破解
查看>>
vmware 虚拟机扩展 liunx系统硬盘空间
查看>>
数据库之sqlite
查看>>
virtualbox之下载地址
查看>>
spring boot整合mybatis深坑之c3p0的详细配置
查看>>
SpringBoot实战(四)获取接口请求中的参数(@PathVariable,@RequestParam,@RequestBody)...
查看>>
RHEL5.8设置OpenSSH的X11 Forwarding功能
查看>>
Oracle 和 Sql service 区别
查看>>
java正则表达式
查看>>
bootstrap经典总结
查看>>
MongoEngine中文参考
查看>>