关于C# 插入和显示 SQL IMAGE类型问题,急!谢谢!

yao7568183 2008-12-14 04:36:33
这是插入图片的代码片段:
           
...
FileStream fs = new FileStream(ptname,FileMode.Open,FileAccess.Read);
byte[] b = new byte[fs.Length];

fs.Read(b, 0, Convert.ToInt32(fs.Length));

si.saveim(txtid.Text.Trim(),b); //存储过程 功能保存图片
fs.Close();
MessageBox.Show("祝贺你,保存完毕");

...
[code]

这边是输出图片的代码片段
[code=C#]
...
byte[] mydata = new byte[0];

db.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = db.Conn;
cmd.CommandText = "select image from item where itemid='" + txtid.Text.Trim()+"'";
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
mydata = (byte[])sdr["image"];
MemoryStream ms = new MemoryStream(mydata);
ms.Position = 0;
Image img = Image.FromStream(ms,true); //显示图片的时候,总是提示这一句出错,说是参数类型错误
ptimage.Image = img;
ms.Close();
db.Close();
...



再附上存储过程的代码:

public void saveim(string itemid,byte[] ptname)
{
Database db=new Database();
try
{
SqlParameter[] par={
db.MakeInParam("@itemid",SqlDbType.VarChar,50,itemid),
db.MakeInParam("@image",SqlDbType.Image,16,ptname)
};
db.RunProc("saveimage",par);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
}
上面的函数都是事先封装好的其他的调用都正常,没有问题。

插入以后数据库表还是可以看到16进制的代码,但PICTUREBOX就是无法显示图片。
数据库的存储过程和C#代码都查了无数遍,实在是找不出问题在哪里,虚心请教下,请问问题到底在哪里,急,先谢谢你们!
...全文
142 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yao7568183 2008-12-16
  • 打赏
  • 举报
回复
都没用,我再找找。
zjp8023 2008-12-15
  • 打赏
  • 举报
回复
Image img = Image.FromStream(ms,true); //显示图片的时候,总是提示这一句出错,说是参数类型错误
猿敲月下码 2008-12-15
  • 打赏
  • 举报
回复
db.MakeInParam("@image",SqlDbType.Binary,16,ptname)
zjp8023 2008-12-15
  • 打赏
  • 举报
回复
db.MakeInParam("@image",SqlDbType.Image,16,ptname)
db.MakeInParam("@image",SqlDbType.Image,ptname)
HDNGO 2008-12-15
  • 打赏
  • 举报
回复
SqlDbType.Image,16 改成 SqlDbType.Image,长度去掉。。。被截断了~
yao7568183 2008-12-15
  • 打赏
  • 举报
回复
试过,没有用,晕了。


IMAGE列里面是这个东西, 0xFFD8FFE000104A46494600010102001C
我怀疑是不是数据没有存完全,编码被截断了,所以读取错误。

但是看存储过程好像没有问题啊。
下面是我数据库的存储过程

CREATE PROCEDURE saveimage
(
@itemid varchar(50),
@image image
)
AS
UPDATE Item
SET [image]=@image
WHERE itemid=@itemid
GO
lvfeng180 2008-12-14
  • 打赏
  • 举报
回复
把 ,true 去掉
51Crack 2008-12-14
  • 打赏
  • 举报
回复
,true 去掉

111,130

社区成员

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

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

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