我正在使用通用处理程序从数据库加载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" />
答案 0 :(得分:0)
当未调用连接对象的open方法时,会显示此信息 你需要这样的东西:
SqlConnection conn = (SqlConnection)obj_DB.GetDBConnection();
conn.Open();