Xpoint
   [напомнить пароль]

Чтение данных Long Bin через DBI

Метки: [без меток]
2007-01-05 13:41:47 [обр] Сергей Степанец[досье]
сообщение промодерировано

Есть код:

 use DBI;
 ...
 $d = DBI->connect("DBI:ODBC:video", '', '');
 open img, "c:/3/1.jpg";
 binmode img;
 read(img,$buff,1000000);
 close img;
 $sth = $d->prepare("insert into images (IDinCD, image) values (1,?)");

 print length $buff; 

 $rv = $sth->execute($buff);
 open img, ">c:/3/2.jpg";
 binmode img;
 $sth = $d->prepare("select image from images where idincd=1");
 $rv = $sth->execute;
 $sth->{LongReadLen}=100000;
 $sth->{LongTruncOk}=false;
 $ar=$sth->fetchrow_arrayref;
 print img $ar->[0];
 close img;

Читается картинка, вроде, правильно. Правильно заносится в базу - длина поля равна длине картинки. Но вот, чтение из базы... в общем, файл 2.jpg ни как создаваться не желает, на сколько я понял, как только встречается в $ar->[0] символ с кодоь 0, все, пипец. Как создать файл с информацией из поля типа Long binary?

спустя 4 часа 56 минут [обр] Алексей Шейнюк[досье]
Как я понимаю работает этот код под Windows.
А посему для работы с бинарными данными необходимо использовать binmode.
Очень полезно почитать perldoc binmode по этому поводу.
спустя 19 минут [обр] Алексей Шейнюк[досье]
Так, нельзя отвечать на вопросы в конце рабочей недели...
Прошу прощения за бессмысленный ответ
Powered by POEM™ Engine Copyright © 2002-2005