|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alexander V. Gaiduk 2:5020/400 18 Apr 2001 16:51:00 To : All Subject : Re: Помогите разобраться с IBPerl -------------------------------------------------------------------------------- mrrc wrote in message <987591951.983682@basic.maxnet.ru>... >Возникла необходимость вывести содержимое базы в InterBase через веб, так >вот: > >FreeBSD 4.2 + firebird-0.9_4 (InterBase 6.0 Classic version) + IBPerl-08p3 > >Hабросал скриптик, подскажите, что нужно подправить в нижеследующем примере, >чтобы вывести указанную в теле таблицу через броузер, что тут неправильно >выполнено? Hаверняка я ошибся на стадии обращения к этой таблице и запроса >из нее данных, а также вывода полученного содержимого на экран броузера. > >Подключение к базе проходит нормально, все путем, вывод ошибки при >невозможности подсоединиться тоже отрабатывается должным образом, а вот что >дальше делать, не разберусь никак. > >Один из прилагаемых примеров отработал, все вывелось, но там настолько все >мудрено, что толком ничего не понял. эт точно :)) я сам не один час ковырял чтоб понять "почему так" думаю в моем куске разберешся. >-------------------------------------------------------------------------- > >#!/usr/bin/perl > >print "Content-type: text/html\n\n"; > >use IBPerl; > >$database = '/usr/interbase/examples/v5/employee.gdb'; > >$db = new IBPerl::Connection( > Server => '192.168.0.2', > Protocol => 'TCP/IP', > Path => $database, > User => 'sysdba', > Password => 'masterkey', > Cache => 1000); > >if ($db->{Handle} < 0) { > print "Hевозможно подключиться к базе данных. Ошибка в следеющем:\n"; > print "$db->{Error}\n"; > exit 1; # No sense in continuing. > } > >my $tr = new IBPerl::Transaction( Database => $db ); > $tr->commit(); > >if ($tr->{Handle} < 0) { > print "Failure to start a transaction. Error as follows:\n"; > print "$tr->{Error}\n"; > exit 1; > } > >my $st = new IBPerl::Statement( > Transaction => $tr, > SQL => 'SELECT * FROM EMPLOYEE'); > $st->execute(); > >$st->fetch( \$result ); > print "$result\n"; > >$db->disconnect(); > >------------------------------------------------------------------------- по моему наврал или с транзакцией: не надо ее коммитить там, где ты это делаеш, или с фетчем: $result должен быть хэшем (%result) а не скаляром. вот правильный кусок кода: Caldera eServer OpenLinux 2.3 (2.2.14), IBPerl-08p3, Interbase 6.0 SuperServer ------------------------------------------------------------ my $database = "xxx.xxx.xxx.xxx:/где/то/далеко/ibtest.gdb"; # телефонный справочник # таблица TEL, поля: PHONE, FIO, STREET, HOUSE, FLAT my ($db, $tr, $st, @streets, %row, $query); $query = "select * from tel where fio like '$search_fio\%' order by street,fio,house;"; $db = new IBPerl::Connection(Path=>$database, User=>'юзер', Password=>'пароль'); if ($db->{Handle} < 0) { print "Error: $db->{Error}\n"; exit 1; } $tr = new IBPerl::Transaction(Database=>$db); if ($tr->{Handle} < 0) { print "Error: $db->{Error}\n"; exit 1; } $st = new IBPerl::Statement(Transaction=>$tr, SQL=>$query); if ($st->{Handle} < 0) { print "Error: $db->{Error}\n"; exit 1; } if ($st->execute() < 0) { print "Error: $db->{Error}\n"; exit 1; } print "<table border=1 width=100%><tr>"; print "<td>NN</td><td>Телефон</td><td>ФИО</td><td>Улица</td>"; print "<td>Дом</td><td>Квартира</td></tr>"; while ($st->fetch(\%row) == 0) { $row{PHONE} =~ s/(..)(..)$/-$1-$2/g; print "<tr>"; print "<td>$row{PHONE}</td>"; print "<td>$row{FIO}</td>"; print "<td>$row{STREET}</td>"; print "<td>$row{HOUSE}</td>"; print "<td>$row{FLAT}</td>"; print "</tr>\n"; } print "</table>"; if ($tr->commit() < 0) { print "Error: $db->{Error}\n"; exit 1; } if ($db->disconnect() < 0) { print "Error: $db->{Error}\n"; exit 1; } -------------------------------------------------------- посмотреть на работу всего этого можно тут: http://wood.lesobank.ru/projects/005/index.shtml проект на стадии разработки, по этому претензии не принимаются. =GAV --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/39316a254c55.html, оценка из 5, голосов 10
|