请各位帮忙看看,谢谢

b_duan 2012-04-09 10:55:49
目前是想把图片存放到数据库,
做法:

//1、转换为字节数组
strImgPath = @"D:\visual studio 2010\Projects\MainPage\Alarm.png";
MemoryStream ms = new MemoryStream();
System.Drawing.Image.FromFile(strImgPath).Save(ms, System.Drawing.Imaging.ImageFormat.Png);
ProcParameter[] imgParams = new ProcParameter[1];
imgParams[0] = new ProcParameter("@img", SqlDbType.Image,
System.Text.Encoding.Unicode.GetString(ms.GetBuffer()), ParameterDirection.Input);
//这里把图片字节数组转换为string(ProcParameter的需要,自定义的一个类),

//2、将ProcParameter序列化(xml)由于要传到服务端,
SrvProxyAdapter.ExecSql(strSql, PublicMethod.GetStringBySerializeProcParam(imgParams), -1);
//ExecSql函数会反序列化imgParams,然后执行,这时候就报错了,说xml文档()出错

public static string GetStringBySerializeProcParam(ProcParameter[] Params)
{
// 序列化
XmlSerializer xmlFormatter = new XmlSerializer(typeof(ProcParameter[]));
StringWriter StrWriter = new StringWriter();

xmlFormatter.Serialize(StrWriter, Params);
//传递的参数信息
return StrWriter.GetStringBuilder().ToString();
}


正常查询数据库的非图片是没问题的,我跟踪了下xml文档,里面显示了中文(不知道是否有问题),编码是UTF-16的,请各位帮忙查下原因,先谢了
...全文
122 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
b_duan 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

直接存储称二进制不行么
[/Quote]

你是指数据库的类型设定为binary?
pmwin 2012-04-09
  • 打赏
  • 举报
回复
直接存储称二进制不行么
b_duan 2012-04-09
  • 打赏
  • 举报
回复
回楼上2位:

我写应用层,数据库访问的方法已经写好了,是用wcf传给服务器的,是B/S的,数据库的提供的方法,要求我对图片的字节数组转换后为string后,再序列化(xml方式),现在感觉问题就出在序列化后,xml文档打开错误
youzelin 2012-04-09
  • 打赏
  • 举报
回复
如果是网站的话,建议你倒不如直接存相对路径,这样比较方便,而且对于 DB 的压力也不会很大,存二进制是很好的,但是数据量大的时候,对 DB 的压力是很大的。
pmwin 2012-04-09
  • 打赏
  • 举报
回复
是的,这样直接将byte[]存储进去就行了

111,126

社区成员

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

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

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