日期:2014-05-19  浏览次数:20775 次

在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, Fil