Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / работа с Image в MS SQL / 8 сообщений из 8, страница 1 из 1
06.08.2003, 16:53
    #32229150
©Felix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с Image в MS SQL
Как записать данные и извлечь их из поля данного типа?

я пишу на билдере....

знаю что есть что то вроде лоад ту стрим и сейв ту стрим...

конектюсь через адо.
...
Рейтинг: 0 / 0
07.08.2003, 17:46
    #32230413
©Felix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с Image в MS SQL
немного разобрался... вставляю так


ADOTable1->Edit();
((TBlobField *) ADOTable1->FieldByName("foto"))->LoadFromFile(FileListBox1->FileName);
ADOTable1->Post();


а вот вынимать так как в хелпе не получаеться

ADOQuery1->Open();
int MemSize;
char *Buffer;

//if (!ADOQuery1->Eof)
//ADOQuery1->Next();


TStream *Stream = ADOQuery1->CreateBlobStream((TBlobField *)ADOQuery1->FieldByName("foto"), bmRead);
try
{
MemSize = Stream->Size + 1; // add one for null terminator
Buffer = new char[MemSize]; // Allocate the memory.
try
{
Stream->Read(Buffer, MemSize); //Read Notes field into buffer.
Image1->SetTextBuf(Buffer); // Display the buffer's contents.

}
catch (...)
{
delete Buffer;
throw;
}
delete Buffer;
}
catch (...)
{
delete Stream;
throw;
}
delete Stream;

в запросе выбрано одно поле...
...
Рейтинг: 0 / 0
07.08.2003, 19:58
    #32230519
MrAlex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с Image в MS SQL
А что нельзя сразу взять TDBImage и в нем отображать картинку.
TDBImage1->DataField = "foto" ;
И смотри на картинку на здоровье.
...
Рейтинг: 0 / 0
09.08.2003, 19:09
    #32231914
©Felix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с Image в MS SQL
2MrAlex

в вашем случае я смогу отображать только файлыбмп, а у меня jpg

выходя нашел, код приведу позже...
...
Рейтинг: 0 / 0
13.08.2003, 09:32
    #32234905
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с Image в MS SQL
//---------------------------------------------------------------------------
bool save_jpeg( TField *field, TJPEGImage *picture )
{
assert(field);
assert(picture);
TMemoryStream *stream = new TMemoryStream;
TBlobField *blob = (TBlobField *)field;
try
{
picture->SaveToStream(stream);
int sz = stream->Size;
if( sz > NULL )
{
stream->Seek(0,0);
blob->LoadFromStream(stream);
}
}catch(...){ return false;}
delete stream;
return true;
}
//---------------------------------------------------------------------------
bool load_jpeg( TField *field, TJPEGImage *picture )
{
bool result = true;
assert(field);
assert(picture);
TMemoryStream *stream = new TMemoryStream;
TBlobField *blob = (TBlobField *)field;
try
{
blob->SaveToStream(stream);
int sz = stream->Size;
if( sz > NULL )
{
stream->Seek(0,0);
picture->LoadFromStream(stream);
}else
result = false;
}catch(...){ result = false; }
delete stream;
return result;
}
//---------------------------------------------------------------------------
bool jpeg2file( TField *field, char *name_file )
{

bool result = true;
assert(field); assert(name_file);
TMemoryStream *stream = new TMemoryStream;
TBlobField *blob = (TBlobField *)field;
try
{
blob->SaveToStream(stream);
int sz = stream->Size;
if( sz > NULL )
{
stream->Seek(0,0);
stream->SaveToFile(name_file);
}else
result = false;
}catch(...){ result = false; }
delete stream;
return result;
}
//---------------------------------------------------------------------------
bool save_jpeg( TField *field, ::Graphics::TBitmap *picture )
{
assert(field);
assert(picture);
TMemoryStream *stream = new TMemoryStream;
TBlobField *blob = (TBlobField *)field;
try
{
picture->SaveToStream(stream);
int sz = stream->Size;
if( sz > NULL )
{
stream->Seek(0,0);
blob->LoadFromStream(stream);
}
}catch(...){ return false;}
delete stream;
return true;
}
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
25.05.2005, 15:04
    #33083677
sharkenshtein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с Image в MS SQL
Lepsik
bool jpeg2file( TField *field, char *name_file )
{

bool result = true;
assert(field); assert(name_file);
TMemoryStream *stream = new TMemoryStream;
TBlobField *blob = (TBlobField *)field;
try
{
blob->SaveToStream(stream);
int sz = stream->Size;
if( sz > NULL )
{
stream->Seek(0,0);
stream->SaveToFile(name_file);
}else
result = false;
}catch(...){ result = false; }
delete stream;
return result;
}


А кто-нибуть может подсказать, почему в этом случае у меня размер файла получается 8000 байт? Картинка храниться в базе большего размера....
Заранее спасибо
...
Рейтинг: 0 / 0
11.07.2005, 08:26
    #33158585
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с Image в MS SQL
--А кто-нибуть может подсказать, почему в этом случае у меня размер файла получается 8000 байт?

Это рабочий код моей проги - храню картинки до 20-50 мег размером

А вообще более подробно в FAQ

http://www.sql.ru/faq/faq_topic.aspx?fid=334
...
Рейтинг: 0 / 0
02.08.2005, 13:33
    #33196445
sharkenshtein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с Image в MS SQL
Lepsik
Это рабочий код моей проги - храню картинки до 20-50 мег размером

А вообще более подробно в FAQ

http://www.sql.ru/faq/faq_topic.aspx?fid=334
Спаcибо большое, Lepsik!
Я все разобрался!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / работа с Image в MS SQL / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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