首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

在winform中从sqlserver2000 image类型字段读取图片出错,该如何处理

2012-01-28 
在winform中从sqlserver2000image类型字段读取图片出错,急急急!!!在winform中从sqlserver2000image类型字

在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();
我以前也做过,没问题啊!

热点排行