日期:2014-05-17  浏览次数:21015 次

C#中向MySQL数据库存储图片的问题
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
试试
------解决方案--------------------
探讨
引用:
是语法错误,因为你的数据库编码不对,在执行前先执行
set names gbk
然后再执行插图片的操作

大哥,能再详细点么?兄弟是菜鸟啊,这方面。

------解决方案--------------------
Sorry,错了,是:
MySQLCommand MyCmd = new MySQLCommand("set names GBK", Conn);

------解决方案--------------------
探讨
个人建议还是别将图片存入数据,那样会增加数据库的容量,从长久使用角度来看,也不利于备份或升级!

------解决方案--------------------
每天回帖即可获得10分可用分
------解决方案--------------------
编码不一样图片是二进制的吧
------解决方案--------------------
确实是个怪问题
------解决方案--------------------
探讨
引用:
坐等高手现身啊

坐等高手现身啊

------解决方案--------------------
为什么要存图片呢?存图片路径不行吗?