|
|
|
IBExpress и FireBird 1.5 - отказ работать с BLOB
|
|||
|---|---|---|---|
|
#18+
Опять я попал :-( Хочу читать и писать данные (jpg) в BLOB-полях. Читать - читает, а вот писать не хочет. ОС - Windows 2000 Pro Сервер - FireBird 1.5.4306 Клиент - Delphi 7 (IBExpress) При попытке записи значения в BLOB-поле (строка уже существует), неважно запросом или ХП, пишет "Unsupported Feature". Может кто что-нибудь подскажет. Или посоветуйте, чем еще можно эту фигню записать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 16:15:54 |
|
||
|
IBExpress и FireBird 1.5 - отказ работать с BLOB
|
|||
|---|---|---|---|
|
#18+
Посоветую конкретно задавать вопрос с конкретным кодом записи значения в поле... А в данной постановке ответ один - у тебя ошибка в программе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 17:32:34 |
|
||
|
IBExpress и FireBird 1.5 - отказ работать с BLOB
|
|||
|---|---|---|---|
|
#18+
Ээ, есть таблица: CREATE TABLE NTOVAR ( NTNUMBER BIGINT NOT NULL, NTNAME VARCHAR(100) NOT NULL, NTTYPE VARCHAR(50) NOT NULL, NTIMAGE BLOB SUB_TYPE 0 SEGMENT SIZE 8192 ); есть IBDatabase, IBTransaction (2шт.) и IBQuery. В IBQuery.SQL такой текст: INSERT INTO NTOVAR ( NTNAME, NTTYPE) VALUES ( :NTNAME, :NTTYPE) Выполняю так: TransactEdit.StartTransaction; IBInsTQuery.ParamByName('NTNAME').Value:= Trim(LabeledEdit1.Text); IBInsTQuery.ParamByName('NTTYPE').Value:= Trim(LabeledEdit2.Text); IBInsTQuery.ExecSQL; TransactEdit.Commit; Вставка записи происходит и видна читающим запросом (в другой транзакции). Далее есть такая ХП: CREATE PROCEDURE NTOVAR_U_IMAGE ( NTNUMBER BIGINT, NTIMAGE BLOB SUB_TYPE 0 SEGMENT SIZE 80) AS BEGIN UPDATE NTOVAR SET NTIMAGE = :NTIMAGE WHERE (NTNUMBER = :NTNUMBER); END Выполняю ее так: TransactEdit.StartTransaction; ProcUpdPicT.ParamByName('NTNUMBER').Value:= IBTovarQueryNTNUMBER.Value; ProcUpdPicT.ParamByName('NTIMAGE').Assign(MyPic); ProcUpdPicT.ExecProc; TransactEdit.Commit; где MyPic - переменная типа TJPEGImage, ее содержимое также отрисовывается на форме посредством Image: TImage; примерно так Image1.Picture.Assign(MyPic); В момент выполнения процедуры ProcUpdPicT выдается сообщение - "EIBClientError: Unsupported Feature" P.S.: Я дико извиняюсь за свое поведение, наверное что-то упустил, не хотелось бы засорять форум без причины... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 19:50:34 |
|
||
|
IBExpress и FireBird 1.5 - отказ работать с BLOB
|
|||
|---|---|---|---|
|
#18+
Да, и... GDS32.dll "родная" - проверено.... и параметр NTIMAGE DataType - ftBlob, ParamType - ptInput ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 20:06:20 |
|
||
|
IBExpress и FireBird 1.5 - отказ работать с BLOB
|
|||
|---|---|---|---|
|
#18+
Да, и... GDS32.dll "родная" - проверено.... и параметр NTIMAGE DataType - ftBlob, ParamType - ptInput ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 20:13:18 |
|
||
|
IBExpress и FireBird 1.5 - отказ работать с BLOB
|
|||
|---|---|---|---|
|
#18+
Самое смешное (смех только несколько нервный ;) я эту фигню уже на PHP сделал... $dbh = ibase_connect($host, $username, $password, 'win1251',0,3); $handle = fopen("1.jpg", "r"); $new_blob = ibase_blob_import($dbh, $handle); $query = ibase_prepare($dbh, "UPDATE NTOVAR SET NTIMAGE = ? WHERE NTNUMBER = 7"); ibase_execute($query, $new_blob); ibase_close($dbh); Смотрю через IBExpert, картинка на месте... И моя Delphi'йская прога ее тоже видит... Буду дальше бодаться... Но вот хоть режте меня, не понимаю, код уже раз сто прочитал и сначала до конца и наоборот. Может в самом деле FireBird уже настолько несовместим с Interbase :-( P.S.: Пиво с меня ;-) (опосля конечно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 23:26:16 |
|
||
|
IBExpress и FireBird 1.5 - отказ работать с BLOB
|
|||
|---|---|---|---|
|
#18+
Хи-хи... Кажется мне лечиться надо :-( Теперь так: ... var MyStream: TIBBlobStream; begin ... MyStream:= TIBBlobStream.Create; MyStream.Mode:= bmReadWrite; ... MyPic.SaveToStream(MyStream); ... TransactEdit.StartTransaction; ProcUpdPicT.ParamByName('NTNUMBER').Value:= IBTovarQueryNTNUMBER.Value; //ProcUpdPicT.ParamByName('NTIMAGE').Assign(MyPic); ProcUpdPicT.ParamByName('NTIMAGE').LoadFromStream(MyStream,ftBlob); ProcUpdPicT.ExecProc; TransactEdit.Commit; ... MyStream.Free; ... end; P.S.: Пойду завтра врачу покажусь ;-) P.P.S.: Вот слово даю, сначала семь раз буду думать, прежде чем спрашивать... P.P.P.S.: Да и еще, в раздел USES надо добавить "Jpeg, IB, IBBlob, DB". Первые два у меня и раньше были... А вот без этой фигни вся эта конструкция не будет работать... P.P.P.P.S.: А ведь 22 часа чистого времени угробил :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 00:54:39 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32560543&tid=1578446]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
188ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 522ms |

| 0 / 0 |
