2014-02-19 10 views
0

Я использую общий обработчик для загрузки изображения из баз данных. Его работа прекрасна, когда я жестко кодирую ImageID в строке запроса при вызове обработчика. Но он дает ошибку другого типа, когда я динамически передаю значение из строки запроса (из datatable):Ошибка при загрузке изображения из базы данных

ExecuteReader требует открытого и доступного соединения. Текущее состояние соединения открыто.

ИЛИ

Недопустимая операция. Соединение закрыто.

Вот код обработчика

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(); 
    } 
} 

А вот HTML и код на стороне сервера на ASPX странице обработчика вызовов

<img id="img2" alt="Image" runat="server" src='<%#"ImageReqHAndler.ashx?adid="+Eval("Reid")%>' width="179" height="148" /> 

ответ

0

Это показано при открытии объекта соединения в метод не называется u нужно что-то вроде:

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

Спасибо, Усман. В моем классе подключения есть проблема. – user3326837

Смежные вопросы