Member 12640137 Ответов: 1

Показать изображение автоматически в поле картинка снова код сотрудника


Для отображения изображения в поле изображения снова идентификатор сотрудника
ЧТО Я БУДУ ДЕЛАТЬ?
Например, (textBox1. Text = dr. GetString(1)
имя picturebox1.изображение = ???

Мой код находится ниже
bool temp = false;
SqlConnection con = new SqlConnection("server=WASEEM\\SQLEXPRESS;database=malik;Trusted_Connection=True");
con.Open();
SqlCommand cmd = new SqlCommand("select * from Table2 where first='" + textBox1.Text.Trim() + "'", con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
textBox2.Text = dr.GetString(1);
textBox3.Text = dr.GetString(2);
pictureBox1.Image = dr.GetString(3);
temp = true;
}
if (temp == false)
MessageBox.Show("not found");
con.Close();
}
}


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

Показать изображение автоматически в поле картинка снова код сотрудника

1 Ответов

Рейтинг:
1

OriginalGriff

Это будет зависеть от того, что именно вы сохранили в своей БД в качестве изображения: вы извлекаете его в виде строки, поэтому вы могли бы сохранить URL-адрес изображения, изображение в виде строки base64 или даже просто попытаться сбросить экземпляр класса Image в БД.
- Мы не знаем.

Что вам нужно сделать, это начать с того, как вы храните его, чтобы точно узнать, что вы храните, а затем повернуть процесс вспять, чтобы получить экземпляр элемента управления изображением для установки в PictureBox.

Но ... самая распространенная ошибка-Сохранить Изображение через myImage.ToString (), или преобразовать его в массив байтов, и сел, что с myImageData.ToString () - ни один из них не будет работать, и оба они будут означать, что ваша БД содержит бесполезный мусор. Вы можете посмотреть здесь: Почему я получаю " параметр недопустим." исключение, когда я читаю изображение из своей базы данных?[^]- это показывает один из способов сделать это правильно.

И сделайте себе несколько одолжений:
1) прекратите использование SELECT * и назовите поля, которые вы хотите получить:

SELECT ID, UserName, UserImage FROM ...
Это намного эффективнее.
2) Не используйте числовые индексы в DataReader: именованные индексы делают ваш код более легким для чтения и гораздо более надежным.
3) перестаньте использовать имена по умолчанию для всего: Table2, textBox3 - теперь вы можете вспомнить, что они содержат, но не будете через три недели, когда вам нужно будет изменить код. используйте "правильные" имена, которые описывают то, что они делают: tabUsers, tbUserName, ... они делают ваш код более самодокументируемым, и это также повышает надежность.
4) и очень, очень важно: никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.