2010年3月4日星期四

Re: [PerlChina] 关于POE::Component::EasyDBI

table_created是一个事件,不是指表是否存在。

在 2010年3月4日 下午8:01,Anthony WU <anthonywuy2k@gmail.com>写道:
table_created
是指你的表已�存在吧?



-------- Original Message --------
Subject: [PerlChina] 关于POE::Component::EasyDBI
From: liu peng <lppchina@gmail.com>
To: perlchina <perlchina@googlegroups.com>
Date: 4/3/2010 16:32
> 源码如下:
> use strict;
> use warnings;
>
> use Data::Dumper;
> use Time::HiRes qw(time);
> use POE;
> use POE::Component::EasyDBI;
> use POE::Component::Client::TCP;
> use POE::Component::Client::SMTP;
> use POE::Component::Net::FTP;
> use POE::Filter::Line;
>     # Set up the DBI
>     POE::Component::EasyDBI->spawn( # or new(), witch returns an obj
>         alias       => 'EasyDBI',
>         dsn         => 'DBI:mysql:database=swatdb;host=127.0.0.1;port=3306',
>         username    => 'root',
>         password    => '',
>     );
>
>     # Create our own session to communicate with EasyDBI
>     POE::Session->create(
>         inline_states => {
>             _start => sub {
>                 $_[KERNEL]->post( 'EasyDBI',
>                     do => {
>                         sql => "CREATE TABLE users (id INT, username
> VARCHAR(100)",
>                         event => "table_created",
>                     }
>                 );
>             },
>
>             table_created => sub {
>                               print "in table_created\n";
>                               my ($kernel, $session, %hash) = ($_[KERNEL], $_[SESSION], %{$_[ARG0]});
>
>                               print Dumper $session;
>                               print "----------------------\n";
>                               print Dumper  $_[ARG0];
>                               print "----------------------\n";
>                               print Dumper  %hash;
>
>                 $_[KERNEL]->post( 'EasyDBI',
>                     insert => {
>                         # multiple inserts
>                         insert => [
>                             { id => 1, username => 'foo' },
>                             { id => 2, username => 'bar' },
>                             { id => 3, username => 'baz' },
>                         ],
>                     },
>                 );
>                 $_[KERNEL]->post( 'EasyDBI' => 'commit' );
>                 $_[KERNEL]->post( 'EasyDBI' => 'shutdown' );
>             },
>         }
>     );
>
> POE::Kernel->run();
>
> exit 0;
>
>
>
> 但运行之后报错:
> C:\SWAT\tools\ServerDaemon>perl testmysql.pl
> in table_created
> $VAR1 = bless( [
>                  {},
>                  {},
>                  {
>                    '_start' => sub { "DUMMY" },
>                    'table_created' => sub { "DUMMY" }
>                  }
>                ], 'POE::Session' );
> ----------------------
> $VAR1 = {
>           'sql' => 'CREATE TABLE users (id INT, username VARCHAR(100)',
>           'session' => 3,
>           'error' => 'POE::Component::EasyDBI was shut down forcibly!',
>           'action' => 'do',
>           'id' => 0,
>           'event' => 'table_created',
>           'placeholders' => []
>         };
> ----------------------
> $VAR1 = 'sql';
> $VAR2 = 'CREATE TABLE users (id INT, username VARCHAR(100)';
> $VAR3 = 'session';
> $VAR4 = 3;
> $VAR5 = 'action';
> $VAR6 = 'do';
> $VAR7 = 'error';
> $VAR8 = 'POE::Component::EasyDBI was shut down forcibly!';
> $VAR9 = 'id';
> $VAR10 = 0;
> $VAR11 = 'event';
> $VAR12 = 'table_created';
> $VAR13 = 'placeholders';
> $VAR14 = [];
>
> 用mysql的客户端可以连上数据库的
> 请大侠帮忙!
>
>

--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。


--
您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

没有评论: