2024年3月17日发(作者:)
C#Form+Mysql数据库实现图片二进制流存储和读取
1. MySql数据库创建表格table
Sql语句:create table 表名(Number int(5),imagemediumblob);
表格中储存二进制图片的属性设为blob(一般mediumblob够用了)
2. 在C#Form窗体中添加个pictureBox控件,用来传递图片
3. 窗体连接数据库(怎么连接这里不做过多详解),在pictureBox控件中添加一张要储存的图片
4. 图片转入数据库代码:
if ( != null)
{
//实列化数据流imageStream
//注:在空间引用中添加using System.I0;
MemoryStream imageStream = newMemoryStream();
//把pictureBox控件中的图片转化成二进制流,储存到实列化的byte[] imageByte
(imageStream, );
byte[] imageByte = y();
//连接数据库并打开
MySqlConnection conn =
newMySqlConnection("server=localhost;database=test2;uid=root;pwd=123456;charset=gb2312
");
();
//在C#Form中写Sql语句,注:?imageByte前的?不能少,在MySql中用的是?,不能用@,@会导致存入的
数据为null,连接数据库的时候charset=gb2312不能少,少了可能会导致用?出现乱码的提示错误
MySqlCommand comm = newMySqlCommand("insert into 表名 values(1,?imageByte)",conn);
//把imageByte转成mediumblob类型储存
(newMySqlParameter("?imageByte", Blob, )).Value
= imageByte;
eNonQuery();
e();
();
e();
}
5. 图片以二进制流存入数据库后,调用读取图片
//连接数据库
MySqlConnection conn = newMySqlConnection("server=localhost;database=test2;uid=root;pwd=123456");
();
//Sql语句: Number是在创建table时候的字段
MySqlCommand comm = newMySqlCommand("select image from t3 where Number=1", conn);
MySqlDataReader dr = eReader();
if (())
{
//把从数据库读取的数据重新转成byte[]
byte[] imageByte = (byte[])dr[0];
//强制转换,如出现不能强制转换的错误,很有可能是读取的数据为null,即没有存图片数据到数据库中
//请仔细查找前面代码是否有细节出错的地方
//实列化数据流imageStream
MemoryStream imageStream = newMemoryStream(imageByte);
//二进制流数据重新转成图片
Image image = ream(imageStream);
赋值给picturebox1
= image;
}
e();
e();
();
e();
注:存储和读取在不同的窗体


发布评论