_LucID |
Отправлено: 18.01.2006, 21:59 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Как можно из объекта TBitmap, или с файла,загрузить картинку в Базу Данных?
Работаю с Sybase SQL Anywhere. Там картинка хранится, как набор битов--в чистом виде кароче. Пробывал делать SQL запросом, но при его формировании: 1) уходит довольно таки много времени (чтиение с файла по битно); 2) чтение происходит в строку AnsiString, которая обрезается (хотя написано в документации--безразмерная ).
Помогите... |
|
Valdemar |
Отправлено: 19.01.2006, 10:20 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Сделайте параметризированный запрос на вставку картинки. Перед выполнением запроса считывайте данные в параметр из файла (метод LoadFromFile) или потока (метод LoadFromStream). Методы записи данных в параметр зависят от компонент доступа к БД. |
|
_LucID |
Отправлено: 19.01.2006, 13:12 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Я и делаю такой запрос. При считывании из файла считывается только то, что расположено до первого символа '<!--POST BOX-->'...хотя тип ftGraphic (подставлял и другие типы-также...)
Вот отрывки:
String SQL_Str = "INSERT INTO DBA.MainTable(ID,Profile_N,Dhole_N,Depth_from,Depth_to,pic_depth,description,picture,del_cond) Values(0,"+Profile->Text+","+Dhole->Text+","+DFrom->Text+","+DTo->Text+","+DFoto->Text+","+Desc->Text+",:Foto,0)";
...
DataModule1->TempQuery->Params->Items[0]->LoadFromFile(File_Name->Text,ftGraphic);
и ничего-загружает пару байт... а потом при запросе выдает ошибку синтаксическую-на месте значения параметра стоит знак вопроса...
В чем проблема? |
|
olegenty |
Отправлено: 19.01.2006, 13:36 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
это не совсем параметризованный запрос. зачем он динамически-то формируется??? сформируйте его один раз, и пользуйтесь. да, и совсем не обязательно, чтобы параметр был ftGraphic, намного лучше просто ftBlob.
|
|
_LucID |
Отправлено: 19.01.2006, 15:37 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
QUOTE (olegenty @ 19/01/2006, 13:36) | это не совсем параметризованный запрос. зачем он динамически-то формируется??? |
Потому что пользователь вот те все данные вводит в процесссе работы...я думал с параметрами, но так ка-то удобнее мне)...это ж добавление записи... Кажется проблему я решил... теперь осталась еще одна..ээ..мелочь: уже с выгрузкой фотографии из базы в приложение... |
|
olegenty |
Отправлено: 19.01.2006, 16:41 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
и в чём проблема заключается?
прямо на этом сайте есть ImageLib, рекомендую скачать и установить. проблемы с физуализацией картинок пропадут раз и навсегда.
|
|
_LucID |
Отправлено: 19.01.2006, 19:35 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
QUOTE (olegenty @ 19/01/2006, 16:41) | и в чём проблема заключается?
прямо на этом сайте есть ImageLib, рекомендую скачать и установить. проблемы с физуализацией картинок пропадут раз и навсегда. |
Не)) хочу сам разобраться во всем)) |
|
_LucID |
Отправлено: 19.01.2006, 19:59 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Реальная проблема! Режет рисунки! Обрезает и чем рисунок больше тем сильнее обрезает его!
DataModule1->TempQuery->Close();
DataModule1->TempQuery->SQL->Clear();
// Формирую запрос динамически (Он есть в предыдущих постах)
DataModule1->TempQuery->SQL->Add(SQL_Str);
// вот тут вот я загружаю БЛОБ — фотографию
DataModule1->TempQuery->Params->Items[0]->LoadFromFile(File_Name->Text,ftBlob);
и оно ее как-то некорректно загружает--обнуляет некоторые пикселы (даже не некоторые, а БОЛЬШУЮ часть снимка!!!)
Я вложил файл--это скрин... Вот почему появляется эта черная область?
|
|
_LucID |
Отправлено: 20.01.2006, 16:31 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Нашел проблему... это сама база.. хотя не пойму: неужели разработчики такие бараны?!
Вобщем: Тип поля — image
делаю запрос (в самой базе — Interactive SQL):
UPDATE mainTable
SET Picture = xp_read_file( 'D:\_LucID\541489.bmp' )
WHERE ID = 0;
и..оно записует в поле только около 33000 байт..вообщем — размер Integera базы... я в шоке... прийдется Менять Базу?!... ужОс...
переходить на СКЛ-сервер?....Что делать?... |
|
Guest |
Отправлено: 20.01.2006, 17:46 |
|
Не зарегистрирован
|
QUOTE |
LONG BINARY
Usage
The maximum size is limited by the maximum size of the database file (currently 2 gigabytes).
Standards and compatibility
· SQL/92 Vendor extension.
· Sybase Not supported by Adaptive Server Enterprise.
|
|
|
_LucID |
Отправлено: 20.01.2006, 19:19 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
QUOTE (Guest @ 20/01/2006, 17:46) | QUOTE |
LONG BINARY
Usage
The maximum size is limited by the maximum size of the database file (currently 2 gigabytes).
Standards and compatibility
· SQL/92 Vendor extension.
· Sybase Not supported by Adaptive Server Enterprise.
|
|
Факт, остается фактом: больше размера Integer рисунок не загружается
А это и я читал... |
|