Mysql blob字段插入byte[]数据时sql错误,求大虾指导

问题描述

List<DocImfo>Tempsource=newList<DocImfo>();using(MySqlConnectionconn=newMySqlConnection("server=测试;userid=测试;password=测试;database=测试")){stringsql1="SELECTt.TYPE,t.IMG,t.ID,t.`NAME`,t.PARENTDEPARTMENTNAMEFROMdr_dept_infotWHEREt.TYPE='0'and(t.ID='01151'ort.ID='02606')";conn.Open();intx=1;MySqlCommandcmd1;using(MySqlCommandcmd=newMySqlCommand(sql1,conn)){try{MySqlDataReaderdr=cmd.ExecuteReader();if(dr.HasRows){while(dr.Read()){DocImfoTempinfo=newDocImfo();Tempinfo.ID=(dr["ID"]==null?"无数据":dr["ID"].ToString());Tempinfo.Name=(dr["NAME"]==null?"无数据":dr["NAME"].ToString());Tempinfo.Dept=(dr["PARENTDEPARTMENTNAME"]==null?"无数据":dr["PARENTDEPARTMENTNAME"].ToString());objectTempimg=dr.GetValue(1);if(Tempimg!=null&&Tempimgisbyte[]){try{Tempinfo.img=getBitmapImage(Tempimgasbyte[]);//图片数据存储}catch(Exceptionex){Tempinfo.img=null;}}Tempinfo.Index=x.ToString();Tempsource.Add(Tempinfo);x++;}}dr.Close();dr.Dispose();foreach(DocImfoTempinfoinTempsource){#region图片像素转换Bitmapb=KiResizeImage(Tempinfo.img,115,142);using(System.IO.MemoryStreamms1=newSystem.IO.MemoryStream()){b.Save(ms1,System.Drawing.Imaging.ImageFormat.Jpeg);byte[]Tempnew=ms1.ToArray();if(Tempnew!=null&&Tempnew.Length>0){using(cmd1=newMySqlCommand()){cmd1.CommandText="UPDATEdr_dept_infotSETt.IMG=@datawheret.ID=@idlimit1";cmd1.CommandType=CommandType.Text;cmd1.Connection=conn;cmd1.Parameters.Add("@data",MySqlDbType.MediumBlob,Tempnew.Length);cmd1.Parameters.Add("@id",MySqlDbType.VarChar);cmd1.Parameters["@data"].Value=Tempnew;cmd1.Parameters["@id"].Value=Tempinfo.ID;cmd1.ExecuteNonQuery();}}ms1.Close();}#endregion#region图片保存if(b!=null){//b.Save("C:\Users\Administrator\Desktop\ystp\"+Tempinfo.ID+"_"+Tempinfo.Name+".jpg");b.Dispose();}}#endregion}catch(Exceptionex){MessageBox.Show(ex.Message+x);}finally{MessageBox.Show("转换结束");cmd.Dispose();conn.Close();conn.Dispose();}}}这是主要代码,大意就是从数据库中取出图片信息,然后转换下大小,再update回去//b.Save("C:\Users\Administrator\Desktop\ystp\"+Tempinfo.ID+"_"+Tempinfo.Name+".jpg");这段代码如果放开那么图片是能够生成的,也就是说图片数据至少没问题.但这段代码在执行cmd1.ExecuteNonQuery();时会报错,说我的sql不对然后出来一串乱码,应该是把byte[]里面的部分数据当作认为sql写错了,怎么解决

解决方案

本帖最后由 moonfanslyj 于 2015-12-29 13:52:20 编辑
解决方案二:
没有转义吧?
解决方案三:
引用1楼FoxDave的回复:

没有转义吧?

啥意思需要使用@符号防止转义符生效?还是遍历一遍发现转义符号单独处理?
解决方案四:
引用2楼moonfanslyj的回复:

Quote: 引用1楼FoxDave的回复:
没有转义吧?

啥意思需要使用@符号防止转义符生效?还是遍历一遍发现转义符号单独处理?

都行,避免内容成为语句的关键字就可以

时间: 2024-08-02 08:05:11

Mysql blob字段插入byte[]数据时sql错误,求大虾指导的相关文章

急救:jsp向mysql数据库中插入中文数据时是乱码

问题描述 mysql当初安装的时候采用的编码是utf-8我建立的数据库编码是gbk_chinese_ciJSP文件:<%@pagelanguage="java"contentType="text/html;charset=GBK"%><html><head><title>编码问题</title><metahttp-equiv="Content-Type"content="

mysql快速保存插入大量数据一些方法总结

说明: 这几天尝试了使用不同的存储引擎大量插入MySQL表数据,主要试验了MyISAM存储引擎和InnoDB.下面是实验过程: 实现: 一.InnoDB存储引擎. 创建数据库和表  代码如下 复制代码 > CREATE DATABASE ecommerce; > CREATE TABLE employees (         id INT NOT NULL,         fname VARCHAR(30),         lname VARCHAR(30),      birth TI

在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案[转]

在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案 病症表现为:主要表现为用T-sql语句插入中文数据时数据库显示全是问号"???" 解决办法: 第一种办法:先选中出错的数据库→选中以后右键点击属性会弹出数据库属性 对话框→选中数据库属性对话框中的选项→把选项中的排序规则设置成:Chinese_PRC_90_CI_AS→最后点击确定即可.(注意:在选择数据库属性的时候必须确保你所修改的数据库未被使用才可以修改否则会失败的) 第二种办法:首先打开你的sql查询分析器

mysql删除字段重复的数据sql语句

mysql删除字段重复的数据,经过搜索刚开始是这样做的: delete from v_togo where tel in (select tel from v_togo group by tel having count(tel) > 1) and togoid not in (select min(togoid) from v_togo group by tel having count(tel )>1) 结果mysql报错 you can't specify target table 'v

mysql-POCO C++库操作MySQL的Blob字段,SELECT * 就崩溃了,求破。

问题描述 POCO C++库操作MySQL的Blob字段,SELECT * 就崩溃了,求破. 表里有一个Blob字段,主要用来插入5MB以下的图片,SQL语句是这样的: SELECT * FROM message WHERE id="uuid": 如果不存在就直接INSERT,否则就UPDATE. 使用POCO C++库执行时,当执行 statement.execute()方法就崩溃了,并且try{}catch(...)都无法捕获到,直接挂了. 多数情况下是工作正常的,一般执行上次左右

关于mysql使用存储过程插入大量数据的问题

问题描述 关于mysql使用存储过程插入大量数据的问题 创建数据库 create database ceshi; use ceshi; 创建表 create table ce( id int not null auto_increment, name varchar(50) default null, pw char(50), primary key(id)); 存储过程 delimiter // create procedure insert_ce(in item int) begin dec

利用delphi录入数据时代码错误问题

问题描述 利用delphi录入数据时代码错误问题 procedure TFrm_stu_ins.Button1Click(Sender: TObject); begin //写入数据 if (Trim(edt_name.Text)<>'') and (Trim(edt_numb.Text)<>'' ) and (Trim(edt_id.Text)<>'') then begin dm.q_stu_ins_ins.close; dm.q_stu_ins_ins.SQL.C

racle-C#连接sde数据库,获取要素数据时出现错误:

问题描述 C#连接sde数据库,获取要素数据时出现错误: 错误信息: 格式太旧或是类型库无效. (Exception from HRESULT: 0x80028019 (TYPE_E_UNSUPFORMAT)) 我是读取好多个要素类,一起读取时,中间偶尔会出现这个问题.单独运行出错的那个时,又没有问题了 解决方案 参考:http://codego.net/265548/

Mysql大指量插入数据时SQL语句的优化

1) 对于Myisam类型的表,可以通过以下方式快速的导入大量的数据.       ALTER TABLE tblname DISABLE KEYS;     loading the data     ALTER TABLE tblname ENABLE KEYS; 这两个命令用来打开或者关闭Myisam表非唯一索引的更新.在导入大量的数据到一个非空的Myisam表时,通过设置这两个命令,可以提高导入的效率.对于导入大量数据到一个空的Myisam表,默认就是先导入数据然后才创建索引的,所以不用进