Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > не сохраняется картинка в базу


Автор: Swatch 24.2.2015, 16:11
добрый день.

Есть DataGridView. В первый столбец загружаются картинки из БД. В нулевом кнопка, нажав на которую появляется диалог для выбора картинки.
Выбираю картинку и пытаюсь сохранить. Не сохраняет. Пишет ошибку. БД Oracle, картинки храню в blob

Вот код:
Код

if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                   Stream stream = openFileDialog1.OpenFile();
                    BinaryReader reader = new BinaryReader(stream);

                    byte[] icon = reader.ReadBytes((int)stream.Length);

                  var query = string.Format("update picturestbl t set t.ICON={0} where t.ID = {1}", icon, dataGridView1[3, curRow].Value.ToString());
                    ExecuteQuery(query);
                    dataGridView1.Refresh();


что не так с кодом? подобные запросы на update просто тектовых или числовых полей проходят на ура.... :( как сохранить картинку?

Автор: sgrey 26.2.2015, 05:01
потому что нельзя бинарные данные просто загнать в строку и ожидать что они сохранятся правильно. Нужно использовать запросы с параметрами. Пример http://www.codeproject.com/Articles/48619/Reading-and-Writing-BLOB-Data-to-Microsoft-SQL-or
Если с английским проблемы, могу перевести

Автор: Swatch 26.2.2015, 15:19
Отлично, помогло. Только теперь надо как-то обновить DataGridView. А то данные в базу сохранились, но не обновились. Я, конечно, могу заново перерисовывать датагрид, но ведь если он заполняется из DataTable, данные должны обновляться? или надо принудительно что-то вызывать?

Автор: sgrey 26.2.2015, 18:56
Нужно данные из БД заного запросить чтобы они обновились в DataGridView. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)