Member 13425762 Ответов: 1

Изображения к байт в БД, чтобы изображение на картинке коробки C# SQL сервер


Я новичок и прошу прощения за то, о чем прошу, но мне нужна помощь и просветление. Итак, вот что я придумал и что я получил из статьи членов клуба, и мне трудно это понять. Итак, вот что я сделал, что вызывает ошибку "ССЫЛКА на объект не установлена на экземпляр объекта." :

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

используя системы.Данных.Поставщики sqlclient;
использование системы.Рисование.Изображений;
использование системы.ИО;

пространство имен Kenny
{
общественности частичного класс form1 : форма
{
SqlConnection con = new SqlConnection ("источник данных=.; начальный каталог=master;Интегрированная безопасность=True");
Команда sqlcommand cmd в;
SqlDataAdapter adapt;

открытый form1()
{
метод InitializeComponent();
}


частная buttonsave_Click недействительным(объект отправителя, EventArgs в электронной)
{
MyImage изображение = имя picturebox1.Изображения;
байт [] данных;
использование (MemoryStream ms = новый MemoryStream())
{
мой образ.Сохранить (ms, System.Рисование.Изображений.ImageFormat.Bmp);
данные = МС.Метод toArray();
}

против.Открыть();
КМД = новая команда sqlcommand("вставить в таблицу(картину) значения (@изображений)", кон);
{
УМК.Параметры.AddWithValue ("@image", data);
УМК.Метод executenonquery();
}
против.Закрывать();
}

частная buttonbrowseimage_Click недействительным(объект отправителя, EventArgs в электронной)
{
// открыть диалоговое окно файла
Диалоговое окно openfiledialog открываю = новое диалоговое окно openfiledialog();
// фильтр изображения
открывать.Фильтр = "Файлы Изображений(*.формат JPG; *.в формате JPEG; *.формат GIF; *.в формате BMP)|*.формат JPG; *.в формате JPEG; *.формат GIF; *.БМП";
если (открыть.ShowDialog () = = DialogResult.ОК)
{
// отображение изображения в графическом окне
Image myImage = новое растровое изображение (открыто.имя файла);
}
}

частная buttonview_Click недействительным(объект отправителя, EventArgs в электронной)
{

cmd = new SqlCommand ("SELECT picture FROM kenny WHERE Id=@id", con);
против.Открыть();
УМК.Параметры.AddWithValue ("@ID", pictureBox1. Image);
Sqldatareader reader = cmd.Метода executereader();
если (reader. Read())
{
Byte[] данные = (байт[])читатель["изображение"];
использование (MemoryStream stream = new MemoryStream())
{
myImage = новое растровое изображение (поток);
}
}
}
}
}



что у меня есть: поле изображения, которое реагирует на кнопку просмотра и также должно отображать изображение при просмотре или загрузке. кнопка Сохранить для сохранения его в БД.

1 Ответов

Рейтинг:
0

OriginalGriff

Смотреть здесь:

using (MemoryStream stream = new MemoryStream())
{
myImage = new Bitmap(stream);
}
Вы не устанавливаете поток на какие-либо данные, поэтому изображения нет...
Попробуйте использовать data в конструкторе MemoryStream.


aaaaaaaaaaa222

Теперь я могу сделать вставку, но не могу загрузить изображение обратно. как ты думаешь, что мне делать? спасибо

частная buttonsave_Click недействительным(объект отправителя, EventArgs в электронной)
{
MyImage изображение = имя picturebox1.Изображения;
байт [] данных;
использование (MemoryStream ms = новый MemoryStream())
{
мой образ.Сохранить (ms, System.Рисование.Изображений.ImageFormat.Jpeg);
данные = МС.Метод toArray();
}

против.Открыть();
КМД = новая команда sqlcommand("вставить в таблицу table1(ID,по картинке) значения (@ИД@изображений)", кон);
{
УМК.Параметры.AddWithValue ("@image", data);
УМК.Параметры.AddWithValue ("@id", textBox1. Text);
УМК.Метод executenonquery();
}
против.Закрывать();
}

частная buttonbrowseimage_Click недействительным(объект отправителя, EventArgs в электронной)
{
// открыть диалоговое окно файла
Диалоговое окно openfiledialog открываю = новое диалоговое окно openfiledialog();
// фильтр изображения
открывать.Фильтр = "Файлы Изображений(*.формат JPG; *.в формате JPEG; *.формат GIF; *.в формате BMP)|*.формат JPG; *.в формате JPEG; *.формат GIF; *.БМП";
если (открыть.ShowDialog () = = DialogResult.ОК)
{
// отображение изображения в графическом окне
pictureBox1. Image = новое растровое изображение (открыто.имя файла);
}
}

частная buttonloadview_Click недействительным(объект отправителя, EventArgs в электронной)
{
cmd = new SqlCommand ("SELECT picture FROM table1 WHERE id=@ID", con);
против.Открыть();
УМК.Параметры.AddWithValue ("@ID", textBox1. Text);
Sqldatareader reader = cmd.Метода executereader();
если (reader. Read())
{
Byte[] данные = (байт[])читатель["изображение"];
используя (трансляция потоке MemoryStream = новая потоке MemoryStream(данные))
{
MyImage изображение = имя picturebox1.Изображения;
myImage = новое растровое изображение (поток);
}
}
против.Закрывать();
}

OriginalGriff

Что происходит, когда вы пытаетесь?
Как, по словам отладчика, выглядят данные, считанные из БД?