从数据库加载图像时出错

时间:2014-02-19 07:08:41

标签: asp.net

我正在使用通用处理程序从数据库加载Image。当我在调用处理程序时对查询字符串中的ImageID进行硬编码时,它的工作正常。但是当我从查询字符串(来自数据表)动态传递值时,它会给出不同类型的错误:

  

ExecuteReader需要一个开放且可用的连接。连接的当前状态是打开的。

OR

  

无效的操作。连接已关闭。

这是处理程序的代码

public void ProcessRequest(HttpContext context)
{
    Int64 id = Convert.ToInt64(context.Request.QueryString["adid"]);
    dt = GetRecpDetailsByID(id);

    if (dt.Rows.Count > 0)
    {
        //context.Response.ContentType = "image/jpeg";
        context.Response.BinaryWrite((byte[])dt.Rows[0][2]);
    }
}

public DataTable GetRecpDetailsByID(Int64 reid)
{
    try
    {
        obj_DB.Open();
        obj_sqlcmd = new SqlCommand("GetRecpDetailsByID", obj_DB.GetDBConnection());
        obj_sqlcmd.CommandType = CommandType.StoredProcedure;

        obj_sqlcmd.Parameters.Add(new SqlParameter("@rid", reid));
        obj_sqlda = new SqlDataAdapter();

        obj_dt = new DataTable();
        obj_sqlda.SelectCommand = obj_sqlcmd;
        obj_sqlda.Fill(obj_dt);

        return obj_dt;
    }
    finally
    {
        obj_DB.Close();
    }
}

这是调用处理程序

的ASPX页面上的HTML和服务器端代码
  <img id="img2" alt="Image" runat="server" src='<%#"ImageReqHAndler.ashx?adid="+Eval("Reid")%>' width="179" height="148" />

1 个答案:

答案 0 :(得分:0)

当未调用连接对象的open方法时,会显示此信息 你需要这样的东西:

SqlConnection conn = (SqlConnection)obj_DB.GetDBConnection();
conn.Open();
相关问题