2014-02-19 50 views
0

我正在使用通用處理程序從數據庫加載圖像。它的工作很好,當我在呼叫處理程序中硬編碼查詢字符串中的ImageID時。但是,當我動態地從查詢字符串(從數據表)中傳遞值時,它給出了不同類型的錯誤:從數據庫加載圖像時出錯

ExecuteReader需要一個開放且可用的Connection。連接的當前狀態已打開。

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

這顯示,當一個連接對象的open方法不叫 你需要類似的東西:

SqlConnection conn = (SqlConnection)obj_DB.GetDBConnection(); 
conn.Open(); 
+0

謝謝你烏斯曼。我的連接類有一個問題。 – user3326837