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

У меня в SQL-2000 есть таблица, в которой как я понимаю должно быть поле хронящее изображения(byte наверное, хотя там есть и image)...
А на форме в VB.NET есть picturebox, в котором должна отображаться картинка из базы, и также запись в БД из picturebox, если можно примерчик, если нет то как нить поподробнее, или ссылки к примерам, ОЧЕНЬ НАДО!!!!
...
Рейтинг: 0 / 0
Изображения и БД
    #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
Изображения и БД
    #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
Изображения и БД
    #33452975
Smirnov Anton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, вру
не те же массивы байтов
окончательный вопрос - как сделать через хранимую процедуру
вставить(вопрос решён с FileStream)
и как получить через out параметр хранимой процедуры?
...
Рейтинг: 0 / 0
Изображения и БД
    #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
Изображения и БД
    #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
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Изображения и БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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