Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Update image


Автор: retto 25.3.2008, 20:52
Есть таблица в которой хранится картинка (SQL Server 2005) соответственно в поле Image. Когда я добавляю картинку методом:
Код

 DataTable dt = this.cinemaDataSet2.Фильм;//выбраем таблицу с БД
 DataRow row = dt.NewRow();//создаем новую строчку
 FileStream file = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read);
int Length = (int)file.Length;
 byte[] mass = new byte[Length];
 file.Read(mass, 0, Length);
 file.Close();
row["Рисунок"] = mass;
 dt.Rows.Add(row);//сохраняем новую строчку
this.фильмTableAdapter.Update(cinemaDataSet2.Фильм);

то картинка в итогге нормально добавляется и соответственно нормально выводится в pictureBox.

Мне надо сделать возможность изменять картинку. Создал хранимую процедуру, которая заменяет картинку на новую:
Код

ALTER PROCEDURE [dbo].[UpdateFilm]
@image image,
@kod int
AS
UPDATE Фильм
SET              
Рисунок =@image,
Where [Код фильма]=@kod


Вызываю её и кидаю туда новый рисунок. В базу рисунок добавляется, но pictureBox гонит что нету там никакого рисунка. Я гдето читал что Update для рисунка надо делать если поле NULL, делал и так: рисунок добавляется, но pictureBox'у на это пофиг.
Что я неправильно делаю?

Чуть не забыл: апдейт картинки:
Код

FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read);
                    int Length = (int)file.Length;
                    byte[] mass = new byte[Length];
                    file.Read(mass, 0, Length);
                    file.Close();
                    SqlConnection con = new SqlConnection("Data Source=RETTO\\SQLEXPRESS;Initial Catalog=Cinema;Integrated Security=True");//подключаемя к базе
                    SqlCommand comm = new SqlCommand("EXEC UpdateFilm " +
                   "@image='" + mass + "', " +
                   "@kod=" + treeView1.SelectedNode.Tag + "", con);
                    con.Open();//коннектимся
                    comm.ExecuteNonQuery();
                    comm.Connection.Close();

Автор: informatik 25.3.2008, 22:52
Привет! У тебя ошибка в обновлении.. 

Попробуй так сделать.
Вместо вот этого:
Код


SqlCommand comm = new SqlCommand("EXEC UpdateFilm " +
                   "@image='" + mass + "', " +
                   "@kod=" + treeView1.SelectedNode.Tag + "", con);


Попробй вот так:
Код

SqlCommand comm = new SqlCommand("UpdateFilm", con);
comm.CommandType = CommandType.StoredProcedure; //Присвоим команде тип - хранимая процедура.. 

//Добавим значения параметров
comm.Parameters.AddWithValue("@image", mass); 
comm.Parameters.AddWithValue("@kod",  treeView1.SelectedNode.Tag); 

Автор: retto 25.3.2008, 23:57
informatik,  дружище, большое спасибо!!! Вот это выручил. smile 

Автор: informatik 26.3.2008, 12:08
Пожалуйста retto! Неплохо бы отметить тему как решенную...

Автор: retto 26.3.2008, 15:16
У меня такие же проблемы с апдейтом даты (datetime) как и с картинкой были. ТОесть довляться добавляется, выводится всё красиво, а вот апдейт делать почемуто нехочет. Может его надо делать как-то подругому?

Проблема решена, надо было просто принудительно конвертнуть в формат datetime

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