C#,需要把pictureBox中的图片保存到mysql数据库中的blob字段中去,从网上查找了很多资料,也试了很多办法,数据库中内容还是null,代码如下,请各位高手指点指点。
string sqlstr = "Insert into Empolyer(EmployeeID,DepartmentID,LoginName,PassWord,Name,Sex,IsUse,photo) values ('000007','000004','ssss','ssss','ssss','1','1',@image)";
MySqlConnection conn = new Conn().getConn();
MySqlCommand command = new MySqlCommand(sqlstr,conn);
if (img_photo.Image != null)
{
MemoryStream Stream = new MemoryStream();
img_photo.Image.Save(Stream, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] imageb = new byte[Stream.Length];
Stream.Read(imageb,0,(int)Stream.Length);
Stream.Close();
command.Parameters.Add(new MySqlParameter("@image", MySqlDbType.Blob));
command.Parameters["@image"].Value = imageb;
}
command.ExecuteNonQuery();使用网上说的很多办法,就是保存进去不报错,但仍然是null。请各位指教。
string sqlstr = "Insert into Empolyer(EmployeeID,DepartmentID,LoginName,PassWord,Name,Sex,IsUse,photo) values ('000007','000004','ssss','ssss','ssss','1','1',@image)";
MySqlConnection conn = new Conn().getConn();
MySqlCommand command = new MySqlCommand(sqlstr,conn);
if (img_photo.Image != null)
{
MemoryStream Stream = new MemoryStream();
img_photo.Image.Save(Stream, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] imageb = new byte[Stream.Length];
Stream.Read(imageb,0,(int)Stream.Length);
Stream.Close();
command.Parameters.Add(new MySqlParameter("@image", MySqlDbType.Blob));
command.Parameters["@image"].Value = imageb;
}
command.ExecuteNonQuery();使用网上说的很多办法,就是保存进去不报错,但仍然是null。请各位指教。
解决方案 »
- 求赐教`
- 判断鼠标是否在特定区域的问题
- 征求一个最简单高效的算法,不复杂
- 大家平时用的是哪个记事本,哪个记事本好用些。windows的写字板和记事本都有缺陷。写字板在横着复制一些字符时,总是要多复制一个,很讨厌。
- 关于泛型的一个简单问题
- aspx里的控件文本框怎么能绑定xml里面的数据?
- 如何利用baidu或者google的以硬盘搜索,把pdf文件转txt文本?
- 对一个WinForm设置enabled=false,为什么还会响应Click事件?
- 如何取前15个字符
- 怎么通过拖放网页连接获得该连接指向的地址?
- C# Font(),能解释一下这个函数吗?
- winfrom中个用户控件,怎么以插件形势加载到另一个项目中。
byte[] imageb = File.ReadAllBytes(picpath);
MySqlConnection sqlcon = DBoper.GetMysqlConn(BaseInfo.DBConnString);
MySqlCommand sqlcom = new MySqlCommand(sqlcomstr.Replace("@images","?images"), sqlcon);
sqlcom.Parameters.Add("?images", MySqlDbType.MediumBlob, imageb.Length).Value = imageb;
sqlcom.ExecuteNonQuery();
sqlcom.Dispose();
sqlcon.Close();
sqlcon.Dispose();
以前经测试是没有问题的,我想你的问题是@和?的问题
按照上面的办法是可以看到BLOB列中已经有了内容,但是在navicat中的数据浏览中却看不到,利用navicat导出成JPG格式的图片,打开的时候提示文件不完整。我自己怀疑
MemoryStream Stream = new MemoryStream();
img_photo.Image.Save(Stream, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] imageb = new byte[Stream.Length];
Stream.Read(imageb,0,(int)Stream.Length);
Stream.Close();
这部分中间有错误。我就是把System.Drawing.Imaging.ImageFormat.Bmp换成System.Drawing.Imaging.ImageFormat.Jpeg还是不行。
继续请教,该怎么做?是不是要根据图片的具体类型来写后面的图片格式?
MemoryStream Stream = new MemoryStream();
img_photo.Image.Save(Stream, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] imageb = new byte[Stream.Length];
Stream.Read(imageb,0,(int)Stream.Length);
Stream.Close();
这部分,我把System.Drawing.Imaging.ImageFormat.Bmp换成System.Drawing.Imaging.ImageFormat.Jpeg也是不行。
继续请教,该如何写呢?是不是需要根据不同的图片类型更改这部分设置?
这一句改成
byte [] imageb=Stream.ToArray();
或
byte[] imageb=Stream.GetBuffer();
试试看。