Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Изображения и БД / 6 сообщений из 6, страница 1 из 1
23.09.2005, 14:31
    #33286137
AlexCOM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изображения и БД
Помогите!!! пожалуйста

У меня в SQL-2000 есть таблица, в которой как я понимаю должно быть поле хронящее изображения(byte наверное, хотя там есть и image)...
А на форме в VB.NET есть picturebox, в котором должна отображаться картинка из базы, и также запись в БД из picturebox, если можно примерчик, если нет то как нить поподробнее, или ссылки к примерам, ОЧЕНЬ НАДО!!!!
...
Рейтинг: 0 / 0
24.09.2005, 06:36
    #33287016
Sv219
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изображения и БД
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
//выбираем картинку для записи в БД
private Byte[] fData = null;
fData = fDialog.GetFileData(filePatch);//filePatch - путь в файлу
//пихаем картинку в БД 
con.Open();
SqlCommand cmd = new SqlCommand("UPDATE kadr SET Photo = @Photo WHERE Cod = 971", con);
cmd.Parameters.Add("@Photo", SqlDbType.VarBinary);
cmd.Parameters["@Photo"].Value = fData;
int rowAff = cmd.ExecuteNonQuery();
con.Close();
//грузим картинку из БД
con.Open();
SqlCommand cmd = new SqlCommand("SELECT Photo FROM kadr WHERE Cod = 971", con);
SqlDataReader reader = cmd.ExecuteReader();
fData = (Byte[])reader.GetValue( 0 );
con.Close();
//отображаем загруженную картинку
MemoryStream ms = new MemoryStream(fData);
Bitmap bmp = new Bitmap(ms);
pctb.Image = bmp;// pctb = picturebox

//где GetFileData
/// <summary>
/// преобразует выбранный файл в массив байтов 
/// </summary>
/// <param name="path">путь к файлу</param>
/// <returns>файл в виде массива байтов </returns>
public Byte[] GetFileData(string path)
{
	FileStream fs = new FileStream(path, FileMode.Open);
	Byte[] byteFile = new Byte[fs.Length];
	int read = (int)fs.Length;
	fs.Read(byteFile,  0 , read);
	return byteFile;
}
...
Рейтинг: 0 / 0
22.12.2005, 18:44
    #33452969
Smirnov Anton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изображения и БД
а не можете объяснить, почему не проходит через процедуру и параметры
параметр p varbinary(8000)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
			par = new SqlParameter("@p",SqlDbType.VarBinary, 8000 );
			System.IO.Stream str = new System.IO.MemoryStream();
			pictureBox1.Image.Save(str,pictureBox1.Image.RawFormat);
			fData = new Byte[str.Length];
			str.Read(fData, 0 ,(int)str.Length);
			par.Value = fData;
			cmd.Parameters.Add(par);
...
А потом открыть его тоже через out patameter
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...
			par = new SqlParameter("@p",SqlDbType.VarBinary, 8000 );
			par.Direction = ParameterDirection.Output;
			cmd.Parameters.Add(par);

			cmd.Connection = conn;
			cmd.ExecuteNonQuery();
			
			System.IO.MemoryStream ms = new System.IO.MemoryStream();
			fData = (Byte[])cmd.Parameters["@p"].Value;
			ms.Read(fData, 0 ,(int)fData.Length);

			Bitmap bmp = new Bitmap(ms);
			pictureBox1.Image = bmp;
...

Профайлером смотрю - перегоняются те же массивы байтов
и в таблице хранится то же самое
но не выходит
...
Рейтинг: 0 / 0
22.12.2005, 18:48
    #33452975
Smirnov Anton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изображения и БД
нет, вру
не те же массивы байтов
окончательный вопрос - как сделать через хранимую процедуру
вставить(вопрос решён с FileStream)
и как получить через out параметр хранимой процедуры?
...
Рейтинг: 0 / 0
23.12.2005, 12:08
    #33454059
Sv219
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изображения и БД
как получить через out параметр???
под рукой студии нет, поетому не могк проверить ваш код... и свой тоже, поетому предположу

попробуйте вместо этого
Код: plaintext
ms.Read(fData, 0 ,(int)fData.Length);

написать как у меня
Код: plaintext
1.
2.
3.
//отображаем загруженную картинку
MemoryStream ms = new MemoryStream(fData);
Bitmap bmp = new Bitmap(ms);
pctb.Image = bmp;// pctb = picturebox
...
Рейтинг: 0 / 0
23.12.2005, 12:51
    #33454194
Smirnov Anton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изображения и БД
да, спасибо
я уже тоже переиграл
и вот так получилось
Код: plaintext
1.
2.
3.
System.IO.MemoryStream ms = new System.IO.MemoryStream(fData, 0 ,(int)fData.Length);
Bitmap bmp = new Bitmap(ms);
pictureBox1.Image = bmp;
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Изображения и БД / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]