各位高手:
    偶都郁闷好几天了,现在Oracle存储的数据类型是LONG RAW的,怎么能读出来了。痛苦ING!!!!分不够另开帖再加,顶者也有分,千万不要路过就走呀。顶一下!!!!

解决方案 »

  1.   

    偶的代码:
        private void GetImage( string id )
    {
    try
    {
    OracleConnection oraCon = new OracleConnection( "Server=mis;Data Source=mis;user id=js;Password=htgk;" );
    OracleCommand oraCmd = new OracleCommand( "SELECT 图片 FROM ZHCX.FIXSEPAMOVE WHERE 申请书编号 = " + id );
    oraCmd.Connection = oraCon; if( oraCmd.Connection.State == ConnectionState.Closed )
    {
    oraCmd.Connection.Open();
    } OracleDataReader reader = oraCmd.ExecuteReader();
    reader.Read(); Stream s = new MemoryStream( ( byte[] )reader[ "图片" ] ); reader.Close();
    oraCon.Close(); System.Drawing.Bitmap bmp = new Bitmap( s ); bmp.Save( MapPath( "Image\\1.bmp" ), System.Drawing.Imaging.ImageFormat.Bmp ); bmp.Dispose(); this.Response.Write( "<script>" );
    this.Response.Write( "window.open( 'Image/1.jpg', '' , 'width=500,height=400,status=no,resizable=no,left=200,top=200');" );
    this.Response.Write( "</script>" );
    }
    catch( Exception ex )
    {
    Page.RegisterClientScriptBlock( "", "<script language=JavaScript>alert('" + ex.Message.ToString() + "');</script>" );
    }
    }
      

  2.   

    不知道老兄你卡在哪了?
    “Stream s = new MemoryStream( ( byte[] )reader[ "图片" ] );”能不能正常执行呢?
    假如不行的话,我建议你用另一个方式:byte[] image_data=( byte[] )reader[ "图片" ] );
    Stream s = new MemoryStream();
    s.Read(image_data,0,image_data.Length);如果你能执行到这里再用s来保存文件到你的目标位置上,试试。
      

  3.   

    System.Drawing.Bitmap bmp = new Bitmap( s );在这句,出现错误,提示:使用了无效的参数。
      

  4.   

    System.Drawing.Bitmap bmp =System.Drawing.Image.FromStream(s);
    要改成这句
      

  5.   

    System.Drawing.Bitmap bmp =System.Drawing.Bitmap.FromStream();
    发错,不好意思
      

  6.   

    一错再错:
    System.Drawing.Bitmap bmp =System.Drawing.Bitmap.FromStream(s);
    不好意思
      

  7.   

    TO:jerryfos(想飞)还是不行,还是出错,提示:使用了无效的参数。郁闷~ 各位大哥,这是怎么回事呀,郁闷~~~~
      

  8.   

    System.Drawing.Bitmap bmp =(Bitmap)System.Drawing.Bitmap.FromStream(s);
    最后试一次,这句还不行我也没办法了
      

  9.   

    TO:jerryfos(想飞) 不行,郁闷,我用的是Oracle 10G。
    Thank you!!!5555555555555~~~~~~~~~~~~
      

  10.   

    TO:jerryfos(想飞)
    我设断点看了,数据都能回来,长度也有,
    数据也有,但就是不给创建位图。
      

  11.   

    都是同道中人,在外头搞开发的。
    你代码当中:
    Stream s = new MemoryStream( ( byte[] )reader[ "图片" ] );
    reader.Close();
    oraCon.Close();
    System.Drawing.Bitmap bmp = new Bitmap( s );
    改成:
    Stream s = new Stream(( byte[] )reader[ "图片" ]);
    reader.Close();
    oraCon.Close();
    System.Drawing.Bitmap bmp =(System.Drawing.Bitmap)System.Drawing.Bitmap.FromStream(s);
      

  12.   

    TO:jerryfos(想飞)Stream s = new Stream(( byte[] )reader[ "图片" ]);
    这条语句执行不过去。
      

  13.   

    那换回原来的MemoryStream,考虑一下,现在的状态是s文件流已经成功赋值了,但是不能够生成Bitmap对象,所以问题就在
    “System.Drawing.Bitmap bmp = new Bitmap( s );”这一句上,我查了资料,要把流写进对象就是用FromStream()方法的,你多试几下,
    System.Drawing.Bitmap bmp =(System.Drawing.Bitmap)System.Drawing.Image.FromStream(s);
    System.Drawing.Bitmap bmp =(System.Drawing.Bitmap)System.Drawing.Bitmap.FromStream(s);
    看看哪个方法能行,我在我的机器上编译是可以通过的哦,不会提示参数错误。
      

  14.   

    TO:jerryfos(想飞)
    好的,我试一下,可以告诉我你的MSN号吗?。