您的位置:首页 > 数据库 > MySQL

C#读取Mysql blob字段 (转帖)

2014-12-31 17:11 141 查看
/article/1851714.html

开发环境:WindowsXPProfessionalSP3、VS2008、Winform、MySQL5.0、MySQL.Data.dll6.2.3.0

1、从硬盘上读取一图片,将其转化为流,然后存储到此BLOB字段中

[csharp]viewplaincopyprint?

privatevoidbutton1_Click(objectsender,EventArgse)

{

byte[]bytes=null;

bytes=File.ReadAllBytes(@"C:/DocumentsandSettings/user/MyDocuments/MyPictures/11.jpg");

using(MySql.Data.MySqlClient.MySqlConnectionconn=newMySql.Data.MySqlClient.MySqlConnection())

{

conn.ConnectionString=ConfigurationManager.ConnectionStrings["test"].ConnectionString;

MySql.Data.MySqlClient.MySqlCommandcmd=newMySql.Data.MySqlClient.MySqlCommand();

cmd.CommandText="insertintotest(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();

intaffectedrows=cmd.ExecuteNonQuery();

cmd.Dispose();//此处可以不用调用,

conn.Close();//离开using块,connection会自行关闭

}

}



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

[csharp]viewplaincopyprint?

privatevoidbutton2_Click(objectsender,EventArgse)

{

using(MySql.Data.MySqlClient.MySqlConnectionconn=newMySql.Data.MySqlClient.MySqlConnection())

{

conn.ConnectionString=ConfigurationManager.ConnectionStrings["test"].ConnectionString;

conn.Open();

MySql.Data.MySqlClient.MySqlCommandcmd=newMySql.Data.MySqlClient.MySqlCommand();

cmd.CommandType=CommandType.Text;

cmd.CommandText="selectid,picturefromtestwhereid=11";

cmd.Connection=conn;

System.Data.Common.DbDataReaderreader=cmd.ExecuteReader();

byte[]buffer=null;

if(reader.HasRows)

{

reader.Read();

longlen=reader.GetBytes(1,0,null,0,0);//1是picture

buffer=newbyte[len];

len=reader.GetBytes(1,0,buffer,0,(int)len);

System.IO.MemoryStreamms=newSystem.IO.MemoryStream(buffer);

System.Drawing.Imageiamge=System.Drawing.Image.FromStream(ms);

pictureBox1.Image=iamge;

}

}

}



数据库相关文件配置在App.config中,如果不用配置文件,可以写成:

stringremote="PersistSecurityInfo=False;database=数据库名;server=服务器IP;userid=用户名;pwd=密码";

然后conn.ConnectionString=remote;即可。

后记:

之前在.net中用的mysql库是:MySQLDriverCS,但是一直没有搞定,而且用官方给的读取blob字段也失败。于是改用MySql.Data.dll,注意Mysql.Data5.0版本不支持读取Blob字段,所以需要用较高版本,我用的是MySQL.Data.dll6.2.3.0。

MySql.Data.dll6.2.3.0下载地址:http://download.csdn.net/source/2968152

MySql.Data.dll5.0.9.0下载地址:http://download.csdn.net/source/2968157
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: