C#中向MySQL数据库存储图片的有关问题
C#中向MySQL数据库存储图片的问题
MySQL数据库建有一个表 t_a,有一个字段 image,类型是BLOB,用来存储图片。
用上述方法可以存储文件类型,但是换成图片时,要报类似这样的错误
好像读取的路径是乱码,望各位指教。
------解决方案--------------------
楼主直接上传图片然后保存到数据库就行了啊!
------解决方案--------------------
是语法错误,因为你的数据库编码不对,在执行前先执行
set names gbk
然后再执行插图片的操作
------解决方案--------------------
个人建议还是别将图片存入数据,那样会增加数据库的容量,从长久使用角度来看,也不利于备份或升级!
------解决方案--------------------
数据库默认编码错误造成了你的sql乱码
一般默认是utf-8,乱码的话
在mysql客户端执行
set names gbk
试试
------解决方案--------------------
------解决方案--------------------
Sorry,错了,是:
MySQLCommand MyCmd = new MySQLCommand("set names GBK", Conn);
------解决方案--------------------
------解决方案--------------------
每天回帖即可获得10分可用分
------解决方案--------------------
编码不一样图片是二进制的吧
------解决方案--------------------
确实是个怪问题
------解决方案--------------------
------解决方案--------------------
为什么要存图片呢?存图片路径不行吗?
MySQL数据库建有一个表 t_a,有一个字段 image,类型是BLOB,用来存储图片。
- C# code
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();//关闭连接
用上述方法可以存储文件类型,但是换成图片时,要报类似这样的错误
- C# code
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
好像读取的路径是乱码,望各位指教。
------解决方案--------------------
楼主直接上传图片然后保存到数据库就行了啊!
------解决方案--------------------
是语法错误,因为你的数据库编码不对,在执行前先执行
set names gbk
然后再执行插图片的操作
------解决方案--------------------
个人建议还是别将图片存入数据,那样会增加数据库的容量,从长久使用角度来看,也不利于备份或升级!
------解决方案--------------------
数据库默认编码错误造成了你的sql乱码
一般默认是utf-8,乱码的话
在mysql客户端执行
set names gbk
试试
------解决方案--------------------
------解决方案--------------------
Sorry,错了,是:
MySQLCommand MyCmd = new MySQLCommand("set names GBK", Conn);
------解决方案--------------------
------解决方案--------------------
每天回帖即可获得10分可用分
------解决方案--------------------
编码不一样图片是二进制的吧
------解决方案--------------------
确实是个怪问题
------解决方案--------------------
------解决方案--------------------
为什么要存图片呢?存图片路径不行吗?