C#中向MySQL数据库存储图片的问题

wjs496249880 2010-05-13 03:20:12
MySQL数据库建有一个表 t_a,有一个字段 image,类型是BLOB,用来存储图片。

String connStr = "server='" + SeverName + "';Database='" + DBName + "';uid='" + UserName + "';pwd='" + UserPW + "'";
string sql="select * from t_a";
DataSet dt = new DataSet("t_a");//创建一个数据集dt
MySqlConnection Conn = new MySqlConnection(connStr);//定义新的数据连接控件并初始化
Conn.Open();//打开连接
MySqlDataAdapter reads = new MySqlDataAdapter(sql, Conn);//定义并初始化数据适配器

MySqlCommandBuilder cmb = new MySqlCommandBuilder(reads);

reads.MissingSchemaAction = MissingSchemaAction.AddWithKey;
reads.Fill(dt, "t_a"); //将数据适配器中的数据填充到数据集dt中

FileStream fs = new FileStream(@"E:\My Pictures\test.bmp", FileMode.OpenOrCreate, FileAccess.Read);

byte[] MyData = new byte[fs.Length];
fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));

fs.Close();

DataRow myRow;
myRow = dt.Tables["t_a"].NewRow();


myRow["image"] = MyData;

dt.Tables["t_a"].Rows.Add(myRow);

reads.Update(dt, "t_a");

Conn.Close();//关闭连接

用上述方法可以存储文件类型,但是换成图片时,要报类似这样的错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Dnq???>??8p??&??,?????HV{x???tR {[))???7???|lV?y??|?n??fu??G?Io????? 4?Rup??' at line 1


好像读取的路径是乱码,望各位指教。
...全文
531 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
烂熊邓 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
MySQL数据库建有一个表 t_a,有一个字段 image,类型是BLOB,用来存储图片。
[/Quote]
楼主,请问你的image字段,类型为BLOB,我在sql2008中没有发现这个类型名为BLOB。
能解释下BLOB是什么类型吗?
wjs496249880 2010-05-14
  • 打赏
  • 举报
回复
大侠速来啊,为什么存储图片时会出现乱码问题的报错呢?而存储文件则可以。
wjs496249880 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 laowu_ 的回复:]
为什么要存图片呢?存图片路径不行吗?
[/Quote]
上头就是这样要求的啊,没得法。
_JeffreyWu 2010-05-14
  • 打赏
  • 举报
回复
为什么要存图片呢?存图片路径不行吗?
Lucky_6Q 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 wjs496249880 的回复:]
引用 18 楼 wjs496249880 的回复:
坐等高手现身啊

坐等高手现身啊
[/Quote]坐等高手现身啊
wjs496249880 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 wjs496249880 的回复:]
坐等高手现身啊
[/Quote]
坐等高手现身啊
wjs496249880 2010-05-14
  • 打赏
  • 举报
回复
坐等高手现身啊
myhope88 2010-05-14
  • 打赏
  • 举报
回复
确实是个怪问题
wjs496249880 2010-05-14
  • 打赏
  • 举报
回复
各位大侠,速来帮忙啊,究竟是什么问题呀。将图片转化为二进制流存储,什么方式更好点啊。
hjx398 2010-05-13
  • 打赏
  • 举报
回复
编码不一样图片是二进制的吧
wjs496249880 2010-05-13
  • 打赏
  • 举报
回复
 FileStream fs = new FileStream(@"E:\My Pictures\哈哈.txt", FileMode.OpenOrCreate, FileAccess.Read);

存储文件就可以的啊。为什么图片就报错呢。
wjs496249880 2010-05-13
  • 打赏
  • 举报
回复
不行啊,还是报

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DnqÕÎÚ>¹8pï¼& ø,惮£ÍHV{xʐÚtR {[))ÏÀí7ύš|lVÜy‚ì|Õn’Ñfu¥ÆGéIoÂÕ¹µ¾ 4ûRupºˆ' at line 1

这样的错误啊。存储文本类型就可以的啊,为什么图片类型不行呢?
gootey 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yanele 的回复:]
个人建议还是别将图片存入数据,那样会增加数据库的容量,从长久使用角度来看,也不利于备份或升级!
[/Quote]
我也是菜鸟,请教:如果不存进数据库,那存到哪里呢?
deknight 2010-05-13
  • 打赏
  • 举报
回复
Sorry,错了,是:
MySQLCommand MyCmd = new MySQLCommand("set names GBK", Conn);
deknight 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wjs496249880 的回复:]
引用 5 楼 deknight 的回复:
是语法错误,因为你的数据库编码不对,在执行前先执行
set names gbk
然后再执行插图片的操作

大哥,能再详细点么?兄弟是菜鸟啊,这方面。
[/Quote]
在执行sql操作前先加一行
MySqlCommandBuilder cmb = new MySqlCommandBuilder("set names GBK",Conn);
skep99 2010-05-13
  • 打赏
  • 举报
回复
数据库默认编码错误造成了你的sql乱码

一般默认是utf-8,乱码的话
在mysql客户端执行
set names gbk
试试
wjs496249880 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 deknight 的回复:]
是语法错误,因为你的数据库编码不对,在执行前先执行
set names gbk
然后再执行插图片的操作
[/Quote]
大哥,能再详细点么?兄弟是菜鸟啊,这方面。
yanele 2010-05-13
  • 打赏
  • 举报
回复
个人建议还是别将图片存入数据,那样会增加数据库的容量,从长久使用角度来看,也不利于备份或升级!
deknight 2010-05-13
  • 打赏
  • 举报
回复
是语法错误,因为你的数据库编码不对,在执行前先执行
set names gbk
然后再执行插图片的操作
dlsgliss 2010-05-13
  • 打赏
  • 举报
回复
楼主直接上传图片然后保存到数据库就行了啊!
加载更多回复(3)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧