C#读取Mysql blob字段 (转帖)
2014-12-31 17:11
141 查看
开发环境:WindowsXPProfessionalSP3、VS2008、Winform、MySQL5.0、MySQL.Data.dll6.2.3.0
1、从硬盘上读取一图片,将其转化为流,然后存储到此BLOB字段中
[csharp]
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]
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下载地址:
MySql.Data.dll5.0.9.0下载地址:
相关文章推荐
- C#读取Mysql blob字段
- c# winform 读取oracle中blob字段的图片并且显示到pictureBox里,保存进库
- C#对Oracle BLOB字段的写入读取方法
- 关于C#读取MySql数据时,返回DataTable中某字段数据是System.Array[]形式
- C# 连接 Oracle,读取Blob字段数据,存到文件中去,包括pdf等等
- C#利用MySQL的BLOB存储和读取文件和对象
- c# 读取mysql 某个表的所有字段名称
- C# mysql set和enum属性字段的读取和添加
- C#读取MySql时,如果存在字段类型为date/datetime时的可能会出现以下问题
- oracle和mysql的Blob字段的读取和插入
- C#写入和读取数据库blob字段代码
- C# 读取和写入oracle的blob字段的方法
- Mybatis对MySQL中BLOB字段的读取
- 如何读取Oracle的BLOB字段里的文件
- C#操作Oracle 的blob字段使用OracleClient
- mysql中blob字段太大溢出解决
- 往Blob类型字段插入图片,使用与MySql或者Oracle
- mysql blob 读取
- 关于C#(ASP.net)存取MySQL LongText字段的心得
- 用oracle的java存储过程实现BLOB字段的字符串读取