Как загрузить изображение из SQL Server в поле изображения? - PullRequest
8 голосов
/ 10 ноября 2011

Я много пытался выяснить, как я могу загрузить изображение из SQL Server в графическое окно, но я не смог найти очень полезный материал.

Сначала я сохранил изображение в базе данных с помощью следующего запроса:

insert into imageTest (pic_id, pic)
values(1, 'D:\11.jpg')

Теперь я хочу загрузить изображение в графическое окно.

Ответы [ 4 ]

25 голосов
/ 10 ноября 2011

Вы никогда не загружали содержимое изображения в базу данных.Это просто имя файла.

Скажем, в качестве примера, что у вас есть путь к файлу для работы (кажется, что у вас есть, учитывая содержание вопроса).В вашем приложении вы должны загрузить это в базу данных в следующем формате:

byte[] image = File.ReadAllBytes("D:\\11.jpg");

SqlCommand sqlCommand = new SqlCommand("INSERT INTO imageTest (pic_id, pic) VALUES (1, @Image)", yourConnectionReference);
sqlCommand.Parameters.AddWithValue("@Image", image);
sqlCommand.ExecuteNonQuery();

Имейте в виду, что в вашем поле pic, скорее всего, потребуется изменить тип данных.Распространенный тип этой информации: VARBINARY.

Следующая часть - чтение файла в PictureBox.Для этого вам нужно выбрать данные:

SqlDataAdapter dataAdapter = new SqlDataAdapter(new SqlCommand("SELECT pic FROM imageTest WHERE pic_id = 1", yourConnectionReference));
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);

if (dataSet.Tables[0].Rows.Count == 1)
{
    Byte[] data = new Byte[0];
    data = (Byte[])(dataSet.Tables[0].Rows[0]["pic"]);
    MemoryStream mem = new MemoryStream(data);
    yourPictureBox.Image= Image.FromStream(mem);
} 

И это должно быть об этом.Возможно, вы захотите сделать более эффективные проверки безопасности, но это должно помочь вам начать работу.

2 голосов
/ 08 июля 2012

взгляните на: http://msdn.microsoft.com/en-us/library/ms175915.aspx

ваш измененный код:

insert into imageTest (pic_id, pic)
select 1, BulkColumn
FROM Openrowset( Bulk 'D:\11.jpg', Single_Blob) as img
1 голос
/ 10 ноября 2011

См. Мухаммед, что мы делаем, когда имеем дело с изображениями в динамических сценариях, следующим образом:

  1. Загрузка изображения в некоторый каталог веб-приложения (например, / images / или что-то)

  2. Мы храним URL-адрес в поле базы данных таблицы.

  3. Место, где вы хотите включить изображение, просто установите источник изображения наполе базы данных, и оно будет отображаться.

Надеюсь, это поможет

0 голосов
/ 30 декабря 2016

Проверьте с помощью этого кода:

SqlDataAdapter dAdapter = new SqlDataAdapter(new SqlCommand("SELECT Photo FROM Image", conn));
        DataSet dSet = new DataSet();
        dAdapter.Fill(dSet);

        if (dSet.Tables[0].Rows.Count == 1)
        {
            Byte[] data = new Byte[0];
            data = (Byte[])(dSet.Tables[0].Rows[0]["Photo "]);
            MemoryStream mem = new MemoryStream(data);
            PictureBoxName.Image = Image.FromStream(mem);
         }

В данных укажите название вашего столбца изображения.Измените свое имя Picturebox, как вы упоминаете в форме.

...