Gatsby29 Ответов: 1

Как скрыть поле изображения, если в базе данных нет изображения ASP.NET


У меня есть 2 вопроса.

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

И второй вопрос. Как я могу сделать так, чтобы скрыть поле изображения, если в определенном столбце базы данных нет изображения?
Например , если у меня есть 3 поля изображения в базе данных и на моем профиле.aspx и загружено только 1 изображение, как я могу скрыть другие 2.
Надеюсь, вы понимаете мое беспокойство(мой английский не идеален).

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

Это мой код.:
общественный разделяемого класса Control_Panel : система.Веб.Пользовательского интерфейса.Страницы
{
SqlCommand cmd = новая команда SqlCommand();
SqlConnection con = новый SqlConnection();
SqlDataAdapter sda = новый SqlDataAdapter();
DataSet ds = новый набор данных();
охраняемых недействительными в(объект отправителя, EventArgs в электронной)
{
if(Session["User"] == null )
{
Ответ.Перенаправление("Login.aspx");
}
еще
{
против.ConnectionString = "источник данных=JOSIPPC\\SQLEXPRESS;начальный каталог=регистр;Интегрированная безопасность=True";
против.Открыть();
showdata();


}
}

охраняемых недействительными обработчика button1_click(объект отправителя, EventArgs в электронной)
{
Сеанс["пользователь"] = null;
Ответ.Перенаправление("Login.aspx");
}
public void showdata()
{
УМК.Свойства commandtext = "выбрать* в таблице table_1 где Email_id = '" +сеанс["пользователь"]+ "'";
УМК.Подключение = кон;
АСД.Команды selectcommand = ЦМД;
ПДД.Заполнить(ДС);
Этикетка 1.Text = ds.Tables[0].Rows[0]["First_Name"].ToString() + " "+ ds.Tables[0].Rows[0]["Last_Name"].Метод toString();
Label2.Text = ds.Tables[0].Rows[0]["Email_id"].Метод toString();

УМК.Свойства commandtext = "выбрать изображения из таблице table_1 где Email_id='" + сеанс["пользователь"] + "'";
УМК.Подключение = кон;
SqlDataReader dr = cmd.Метода executereader();
если (dr.HasRows)
{
в то время как (dr.Read())
{


byte[] imgd = (byte[])dr["изображения"];
строковые изображения = конвертировать.ToBase64String(imgd, 0, imgd.Длина);
Рис1.ImageUrl = "данные:изображение/png;base64," + изображения;

}
}
еще
{
}
}
}

Richard Deeming

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

using (var con = new SqlConnection("Data Source=JOSIPPC\\SQLEXPRESS;Initial Catalog=register;Integrated Security=True"))
using (var cmd = new SqlCommand("Select First_Name, Last_Name, Email_Id, Images from Table_1 where Email_id = @user", con))
{
    cmd.Parameters.AddWithValue("@user", Session["user"]);
    
    con.Open();
    
    using (var reader = cmd.ExecuteReader())
    {
        if (reader.Read())
        {
            Label1.Text = string.Format("{0} {1}", reader["First_Name"], reader["Last_Name"]);
            Label2.Text = reader["Email_Id"].ToString();
            
            object img = reader["Images"];
            if (img != null && !Convert.IsDBNull(img))
            {
                ...
            }
        }
    }
}

1 Ответов

Рейтинг:
7

Karthik_Mahalingam

основываясь на скриншоте, вы пытаетесь привести значение DBNUll к байтовому массиву, проверить значение null и DbNull перед приведением объекта

Image1.Visible = false;
            object img = dr["Images"];
            if (img != null && img != DBNull.Value)
            {
                Image1.Visible = true;
                byte[] imgd = (byte[])dr["Images"];
                string images = Convert.ToBase64String(imgd, 0, imgd.Length);
                Image1.ImageUrl = "data:image/png;base64," + images;
            }


Gatsby29

Большое вам спасибо он отлично работает

Karthik_Mahalingam

Добро пожаловать