Member 13804099 Ответов: 1

Отображение изображения в C# с помощью адреса изображения из БД


SearchImg.ImageUrl = "~/изображения/";

Что я уже пробовал:

string find = "select Image from tblImages where(Description like '%' + @des + '%')";
            SqlCommand comm = new SqlCommand(find, conn);
            comm.Parameters.Add("@des", SqlDbType.NVarChar).Value = imgsearch.Text;
            conn.Open();
            comm.ExecuteNonQuery();
            SearchImg.ImageUrl = "~/images/";
            conn.Close();

1 Ответов

Рейтинг:
0

Wendelius

ExecuteNonQuery выполняет команду, подобную процедуре или инструкции INSERT. Если вы хотите получить результаты, которые возвращает оператор SELECT, вы должны использовать, например Свойство sqlcommand.Метод ExecuteReader (System.Data.SqlClient)[^]

Таким образом, код может выглядеть примерно так

...
conn.Open();
comm.ExecuteNonQuery();
SqlDataReader reader = comm.ExecuteReader();
if (reader.Read()) {
   SearchImg.ImageUrl = "~/images/" + reader["Image"].ToString();
}
conn.Close();
...

Обратите внимание, что вы должны утилизировать объекты, когда они больше не используются. Самый простой способ-это использовать using блок. Кроме того, вы должны иметь правильную обработку ошибок в случае, если что-то пойдет не так. Например, взгляните на Правильное выполнение операций с базой данных[^]


Richard Deeming

Если вы возвращаете только первое поле первой записи из результирующего набора, то ExecuteScalar было бы проще:

conn.Open();
try
{
    object image = comm.ExecuteScalar();
    if (image != null && !Convert.IsDBNull(image))
    {
        SearchImg.ImageUrl = "~/images/" + image;
    }
}
finally
{
    conn.Close();
}