Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

MIDAS, Oracle, передача в BLOB через параметр


Unk ©   (2004-04-08 05:58:00) 

При вставке двоичного файла в BLOB поле через параметр ClientDatasеt-а происходит резка файла до 6 байт. Текстовый файл вставляется нормально.
BlobClientDataSet.CommandText:=’insert into app_files (file_name, binary_file) values (:file_name, :binary_file);
BlobClientDataSet.params.findparam(‘file_name’).asstring:=extractfilename(‘c:\files\test.mp3’);
BlobClientDataSet.params.findparam(‘binary_file’).LoadFromFile(‘c:\files\test.mp3’, ftBlob);
BlobClientDataSet.execute;
При LoadFromStream происходит то же самое. На сервере приложений у провайдера dataset-ом является TOraQuery (компоненты ODAC).
Что не так или что необходимо добавить в код? Буду очень признателен за помощь.


Unk   (2004-04-08 17:37:00) [1]

Кто-нибудь сталкивался с подобной проблемой в конце концов?


Reindeer Moss Eater   (2004-04-08 12:09:00) [2]

Попробуй подменить свой mp3 большим текстовым файлом.
Хотя и так ясно, что это тонкий клиент не понимает, что поле не текстовое а двоичное


Unk   (2004-04-08 11:42:00) [3]

через параметры TOraQuery (ODAC) все записывает нормально, а вот через параметр ClientDataSet не передает


Reindeer Moss Eater   (2004-04-08 11:39:00) [4]

Тогда наверное тонкий клиент считает что поле текстовое или мемо. Ну и до первого нулевого байта принимает данные.
Попробуй подменить свой mp3 большим текстовым файлом


Unk   (2004-04-08 11:37:00) [5]

я уже использовал условие returning и Empty_Blob() и с локаторами вообще ничего не вставляет, а без них только 6-7 байт файла


Reindeer Moss Eater   (2004-04-08 11:33:00) [6]

Скорее всего неправильно сгенерирован SQL для insert операции на сервере приложений.

С блобами работают через локаторы, которые сначала надо создать и связать с полем конкретной записи


Reindeer Moss Eater   (2004-04-08 11:25:00) [7]

Хотя нет, вру


Reindeer Moss Eater   (2004-04-08 11:25:00) [8]

Нет такого типа поля в Оракл


Unk   (2004-04-08 11:24:00) [9]

Поле типа Blob в БД Oracle


Reindeer Moss Eater   (2004-04-08 11:22:00) [10]

Тип поля в таблице вообще какой?


Johnmen   (2004-04-08 11:20:00) [11]

>Reindeer Moss Eater ©   (08.04.04 11:14) [9]

На это лучше не надеяться...

>Unk   (08.04.04 11:13) [8]

MySream.Seek(soFromBeginning,0);


Reindeer Moss Eater   (2004-04-08 11:14:00) [12]

Тип данных у параметра определяется операцией присвоения параметру значения.
Так что это здесь - не причем


Unk   (2004-04-08 11:13:00) [13]

>это не влияет на результат
И как указатель потока установить в начало?


Unk   (2004-04-08 11:11:00) [14]

А как его задать, пример можно, у меня комп с делфей пока недоступен, datatype является свойством чего?


Reindeer Moss Eater   (2004-04-08 11:10:00) [15]

Тип поля вообще какой?


Johnmen   (2004-04-08 11:09:00) [16]

1. Не указан тип данных параметра
2.
>это не влияет на результат
Возможно указатель потока не стоит в начале...


Nikolay M.   (2004-04-08 11:08:00) [17]

Про .DataType речь.


Unk   (2004-04-08 10:59:00) [18]

.paramtype:=ptInput;
Касаемо .ParamByName('...').LoadFromStream(...,ftBLOB); - это не влияет на результат


Nikolay M.   (2004-04-08 09:48:00) [19]

Сначала не по сабжу, бросилось в глаза:
BlobClientDataSet.params. findparam(‘binary_file’)
Ты в курсе, что произойдет, если в один прекрасный день ты поменяешь имя параметра с binary_file на mega_binary_file? Всего лишь небольшой AV. Попалась мне как-то в наследство программка, автор которой использовал FindParam. А поскольку с момента написания программы прошло туева хуча времени, названия параметров поменялись и проверка этим "программистом" на (FindParam <> nil) просто не присваивала значения. Как следствие, банковская программа молчадолгое время работала неправильно! Руки бы поотрывал...

Что до сабжа, до у параметра, имхо, тип еще нужно выставить.


Johnmen   (2004-04-08 09:35:00) [20]

1. Не указан тип параметра binary_file
2. params.ParamByName('...').LoadFromStream(...,ftBLOB);


Наверх

Титульная страница Поиск, карта сайта Написать письмо