在winform中从sqlserver2000 image类型字段读取图片出错,急急急!!!
在winform中从sqlserver2000 image类型字段读取图片出错,不知道怎么办了,急啊,解决了马上给分
以下是原代码:
//读取图片
Byte[] mybyte = new Byte[];
mybyte = (byte[])read[ "pht_photo "];
MemoryStream ms = new MemoryStream(mybyte);
Image img = Image.FromStream(ms);
picBox.Image = img;
ms.Close();
以下是出错信息
未处理的“System.ArgumentException”类型
其他信息: 使用了无效参数(Parameter is not valid.)。
Help!Help!Help!
[解决办法]
read[ "pht_photo "];
[解决办法]
CHENYI 是不是 陈亮啊 ?
MemoryStream streamMemory;
BinaryFormatter formatter = new BinaryFormatter();
byte [] binaryData=Convert.FromBase64String(read[ "pht_photo "]);
streamMemory = new MemoryStream(binaryData);
data = formatter.Deserialize(streamMemory);
picBox.Image = (Image)Data;
[解决办法]
使用ImageConverter 类来转换就可以了,
使用ImageConverter.ConvertFrom ,参数里的Value是从数据库中取出的Byte[]
[解决办法]
你可以直接:
picBox.Image = Image.FromFile(你要的照片路径);
[解决办法]
楼主用的是vs2003还是vs2005,若2005的话很简单的.
[解决办法]
=================================
其实 光看你的代码 是没有任何错误的....
我用3 中不同的方法 将图片保存到 数据库.
.用你写的代码来调用..显示图片...结果 有一种方法可行..
说明能不能显示 图片.或者 报不报错..和你 如何 写入图片 也有关系...
================
我这里有一段 代码..是写入图片和读取图片 .....
读取的时候 .和你的 代码 几乎 一摸一样.但我能把他 读取出来.......主要看看我们写入图片的时候 的区别...
因为写入图片的方法太多了 ..
==========读取图片========
SqlConnection conn = new SqlConnection( "Server=.;Database=Northwind;Integrated Security=SSPI ");
string strSql = "select a from c ";
SqlCommand cmd = new SqlCommand(strSql, conn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();
byte[] bytes = (byte[])reader[ "a "];
MemoryStream ms = new MemoryStream(bytes);
Image image = Image.FromStream(ms);
pictureBox1.Image = image;
reader.Close();
conn.Close();
===============================写入图片=============
OpenFileDialog openfileDialog = new OpenFileDialog();
openfileDialog.Filter = "Picture Files(*.jpg)|*.jpg|Bmp(*.bmp)|*.bmp|All Files(*.*)|*.* ";
FileStream fileStream;
openfileDialog.ShowDialog();
string filepath = openfileDialog.FileName;
//获得图象并把图象转换为byte[]
fileStream = new FileStream(filepath, FileMode.Open, FileAccess.Read);
byte[] photoArray = new byte[(int)fileStream.Length];
fileStream.Read(photoArray, 0, photoArray.Length);
fileStream.Close();
try
{
pictureBox1.SizeMode = PictureBoxSizeMode.Normal;
pictureBox1.Image = System.Drawing.Image.FromFile(filepath);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
SqlConnection conn = new SqlConnection( "Server=.;Database=Northwind;Integrated Security=SSPI ");
//插入语句
SqlCommand cmd = new SqlCommand( "INSERT INTO c(a)VALUES (@a) ", conn);
cmd.Parameters.Add( "@a ",SqlDbType.Image);
cmd.Parameters[ "@a "].Value=photoArray;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
=========================================
[解决办法]
MemoryStream str = new MemoryStream(entity.LinkIcon);
pbLinkIcon.Image = Image.FromStream(str);
[解决办法]
你存在数据库的图片是什么格式的,如果是bmp的话,要从第67(是不是不67我给忘记了-_-!)个字节开始读
[解决办法]
呵呵 又见这个问题 如果lz是读取得Sqlserver northwind数据库的话那么该错误是由于
northwind数据库中本身image字段数据无效导致的
这个问题我以前已经回答过别人了 并且亲自验证过 的确如此
[解决办法]
SqlConnection conn=new SqlConnection(@ "data source=chenyuming2004\VSdotNET;uid=sa;pwd=cym;database=lhf ");
conn.Open();
SqlCommand cmd=new SqlCommand( "select 照片 from fuser where password= '1b ' ",conn);
SqlDataReader reader=cmd.ExecuteReader();
reader.Read();
MemoryStream buf=new MemoryStream((byte[])reader[0]);
Image image=Image.FromStream(buf,true);
pictureBox1.Image=image;
buf.Colse();
我以前也做过,没问题啊!