Как скрыть поле изображения, если в базе данных нет изображения 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)) { ... } } } }