string SqlStr;
DatabaseUtil m_dbu=new DatabaseUtil();
SqlDataReader m_SqlDataReader;
SqlStr ="select aimg from dict_area where acode='"+Request.QueryString["acode"]+"'";
m_SqlDataReader = m_dbu.searchFromDb(SqlStr);
if(m_SqlDataReader.Read())
{
if (!m_SqlDataReader.IsDBNull(0))
{
Response.ContentType ="image/gif";
Response.BinaryWrite((byte[])m_SqlDataReader["aimg"]);
}

m_SqlDataReader.Close();
m_dbu.ClosesqlCon();

解决方案 »

  1.   

    这个问题我上周刚好遇到了,我是要读网页出来,以下代码读出图片完全没问题。我直接在一个新窗体里显示的图片,没有用任何控件。使用 .net 自带的 System.Data.OleDb 类库的类是无法读取 oracle 数据库里的 BLOB 类型的字段内容,要使用 OracleClient (它是一个专门用于操作管理Oracle数据库的类库,类似于SqlClient类库)的类,.net 不自带 OracleClient ,需要添加 System.Data.OracleClient.dll 引用才能使用,这个文件可到 MSDN 上下载,就在下载那个页面里,很好找的。下面的代码中“SYSTEMCONTENT”字段就是Blob型的,
    myConnection = new OracleConnection("Password=mk;User ID=mk;Data Source=redb.retech.com");
    string sql;
    sql = "SELECT SYSTEMTITLE,SYSTEMCONTENT FROM T_TrainSafeSystem WHERE ID = '" + Request.QueryString["ID"] + "'";
    OracleCommand cmd = new OracleCommand(sql,myConnection);
    OracleDataAdapter adapter = new OracleDataAdapter(sql,myConnection);
    DataSet ds = new DataSet();
    adapter.Fill(ds,"showText");
    byte[] sysRuler = (byte[])ds.Tables["showText"].Rows[0]["SYSTEMCONTENT"];
    Response.BinaryWrite(sysRuler);
      

  2.   

    string strsqlconn;
    strsqlconn = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"].ToString();
    SqlConnection sqlConn = new SqlConnection(strsqlconn);
    sqlConn.Open(); //查找符合条件的图片,取出来
    string strsql;
    strsql = "select Image from Page_Image where Page_Id='"+strid+ "'";
    SqlDataAdapter daImage = new SqlDataAdapter(strsql, sqlConn); //定义一个DataSet,并且进行填充数据
    DataSet dsImage = new DataSet();
    daImage.Fill(dsImage,"Page_Image"); //取消和数据库的关联,释放资源
    sqlConn.Close();
    daImage.Dispose();
    sqlConn.Dispose(); //从数据库中读出图片流
    byte[] btImage = (byte[])dsImage.Tables["Page_Image"].Rows[0]["Image"];
    System.IO.MemoryStream ms = new MemoryStream(btImage);
    //create a bitmap object
    System.Drawing.Bitmap bmp = new Bitmap(ms); // create the actual thumbnail image
    System.Drawing.Image thumImage = bmp.GetThumbnailImage(1638,2338,new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback),IntPtr.Zero); // make a memory stream to work with the image bytes
    MemoryStream msimage = new MemoryStream(); // put the image into the memory stream
    thumImage.Save(msimage,System.Drawing.Imaging.ImageFormat.Jpeg); // make byte array the same size as the image
    byte[] imageContent = new Byte[msimage.Length]; // rewind the memory stream
    msimage.Position = 0;
    // load the byte array with the image
    msimage.Read(imageContent, 0, (int)msimage.Length); // return byte array to caller with image type
    Response.ContentType = "image/JPEG";
    Response.BinaryWrite(imageContent);
    Response.End();
      

  3.   

    to jordano7832:
    你读的是Sql server 2000吗?
      

  4.   

    vs.net动态帮助中就有sql server BLOB字段的读取完整的例子,呵呵。关键字“读取BLOB”,你完全可以抄下来使用。