On Thu, Apr 19, 2007 at 10:35:16AM -0400, John Siracusa wrote:
> On 4/18/07, Bill Moseley <[EMAIL PROTECTED]> wrote:
> > This works fine in my base class:
> >
> > sub init_db { our $DBH =|| App::RDB->new }
> >
> > I've got the same $dbh for the life of the program.
> >
> > But, I'd like to try using DBI->connect_cached directly.
>
> What's your goal? Do you still want just one $dbh for the life of the
> program?
Yes. But, also one that supports pinging the database and creating a
new handle if the connection is dropped.
>
> > sub init_db {
> > ...
> > my $dbh = DBI->connect_cached( @params );
> > return App::RDB->new( dbh => $dbh );
> > }
> >
> > Where @params does not change between calls. I then get a new $dbh.
> > for new RDBO objects.
> >
> > So, I'm not seeing how to correctly do this.
>
> Shouldn't DBI->connect_cached return the same $dbh every time it's
> called? If so, then in the code above you're returning a new App::RDB
> object each time, but all those App::RDB objects are sharing a single
> $dbh. Is that not what you want?
DBI->connect_cached should, but I assume what's happening is RDBO is
issuing a disconnect forcing a new handle to be created.
>
> Here's another variant:
>
> our $DB;
>
> sub init_db
> {
> return $DB if($DB);
> ...
> my $dbh = DBI->connect_cached(@params);
> return $DB = App::RDB->new(dbh => $dbh);
> }
No, I don't think that's it. What if the $dbh connection is lost?
DBI->connect_cached will create a new connection in that case.
--
Bill Moseley
[EMAIL PROTECTED]
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Rose-db-object mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rose-db-object