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

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

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

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


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

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

выходя нашел, код приведу позже...
...
Рейтинг: 0 / 0
работа с Image в MS SQL
    #32234905
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
//---------------------------------------------------------------------------
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
Период между сообщениями больше года.
работа с Image в MS SQL
    #33083677
sharkenshtein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
работа с Image в MS SQL
    #33158585
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--А кто-нибуть может подсказать, почему в этом случае у меня размер файла получается 8000 байт?

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

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

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

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

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


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