![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите разобрться с запихиванием jpg в базу??? [MSSQL]
DBDev © (2003-08-27 10:05:00)Надо подгрузить файл JPG и запихать его в поле базы типа image.Использую TDBImage и ТOpenPictureDialog.
//-------------------------------------------------------------------- -------
if (!OpenPictureDialog->Execute()) return;
int f = open((OpenPictureDialog->FileName).c_str(), O_CREAT);
int bytes = filelength(f);
close(f);
if (bytes < 250000) {
if (UIDM->BoardsQuery->State != dsEdit && UIDM->BoardsQuery->State != dsInsert) UIDM->BoardsQuery->Edit();
DBImageA->Picture->LoadFromFile(OpenPictureDialog->FileName);
Clipboard()->Assign(DBImageA->Picture);
DBImageA->Picture->Assign(Clipboard());
}
else Application->MessageBox("Превышен максимально допустимый размер файла (250 КБ)","Ошибка!",MB_OK|MB_ICONERROR);
void __fastcall TBoardForm::FormShow(TObject *Sender)
{
DBImageA->Picture->UnregisterGraphicClass(__classid(TJPEGImage), __classid(TJPEGImage));
DBImageA->Picture->RegisterFileFormat(__classid(TJPEGImage), "jpg", "jpg", __classid(TJPEGImage));
}
//-------------------------------------------------------------------- -------
Не пойму в чем дело, в базе оказываются данные формата BMP вместо JPG, хотя подсовываемый файл точно в JPG.
Arm79 (2003-08-28 15:09:00) [1]
Лучше всего в "базе держать информацию о jpg а сами файлы просто в каталоге".
А если необходимо именно jpg, то необходимо создать объект TJpegImage, загрузить в него картинку с помощью Assign, а затем записать через метод SaveToStream в поток TADOBLOBStream, предварительно соединенный с BLOB-полем. Считывать тоже необходимо в TJpegImage
Петрович (2003-08-28 11:50:00) [2]
Привет, а зачем тебе запихивать jpg в базу
не проше бы в базе держать информацию о jpg а сами файлы просто в каталоге???
Nikky (2003-08-27 18:54:00) [3]
TBlobField(SomePictureField).LoadFromFile(PictureFileName);
DBDev (2003-08-27 12:50:00) [4]
Совсем запутался :(((! из отпуска только.
Может у кого есть работающий пример кода записи JPG в базу?
DBDev (2003-08-27 12:01:00) [5]
Дык именно его я и использую. В моем случае DBImageA и есть TBlobField.
Delirium (2003-08-27 11:31:00) [6]
TBlobField тебе поможет
DBDev (2003-08-27 11:22:00) [7]
Use TBlobStream to access or modify the value of a BLOB field in a BDE-enabled dataset. А если у меня АДО???
zorik (2003-08-27 11:06:00) [8]
Используй TStream. А еще посмотри старые вопросы в этом же разделе, там минимум 3 таких вопроса есть с ответами. Сначала нужно искать внимательно, а потом спрашивать.
DBDev (2003-08-27 10:51:00) [9]
Собственно без
Clipboard()->Assign(DBImageA->Picture);
DBImageA->Picture->Assign(Clipboard());
Данные почему-то вобще не записываются...
DBDev (2003-08-27 10:34:00) [10]
???