使用Generic Handler从Oracle 11g xe数据库显示图像

时间:2013-04-04 05:51:12

标签: c# asp.net oracle blob generic-handler

我已经完成了将图像插入Oracle数据库。现在我想显示它。

我的处理程序代码是:

    public void ProcessRequest(HttpContext context)
    {
        OracleDataReader dr = null;
        OracleCommand cmd = null;
        OracleConnection conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVER_NAME=XE)));User Id=sakthi_studdb;Password=sakthi;");
        try
        {
            cmd = new OracleCommand
          ("select IMAGE from IMAGETBL where ID=" +
          context.Request.QueryString["imgid"], conn);
            conn.Open();
            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                context.Response.ContentType = "image/jpg";
                context.Response.BinaryWrite((byte[])dr["IMAGE"]);
            }
            if (dr != null)
                dr.Close();
        }
        finally
        {
            if (conn != null)
                conn.Close();
        }
    }

我的aspx图像控件是:

    <div>
This is the student image requested:

    <asp:Image ID="picone" ImageUrl="~/Handler1.ashx?imgid=299" runat="server" />
</div>

运行aspx时,我没有发现任何错误。但图像没有显示。你可以找到我在下面输出的屏幕截图。

enter image description here

我想知道出了什么问题。

     public void ProcessRequest(HttpContext context)
    {
        OracleConnection conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVER_NAME=XE)));User Id=sakthi_studdb;Password=sakthi;");
        try
        {
            long imageId = Convert.ToInt64(context.Request.QueryString["imgid"]);

            using (OracleCommand cmd = new OracleCommand("select IMAGE from IMAGETBL where ID=:ID", conn))
            {
                cmd.Parameters.Add(":ID", OracleDbType.Int64).Value = imageId;
                conn.Open();
                context.Response.ContentType = "image/gif";
                context.Response.BinaryWrite((byte[])cmd.ExecuteScalar());
            }                    

        }
        finally
        {
            if (conn != null)
                conn.Close();
        }
    }

即便这样也不行

0 个答案:

没有答案