问题描述
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的回复:
没有转义吧?啥意思需要使用@符号防止转义符生效?还是遍历一遍发现转义符号单独处理?
都行,避免内容成为语句的关键字就可以