That is, you can switch databases without having to reach into your code to change a statement.
I think batkins was getting at the same point that I'm about to make, but I'm not entirely sure, and I think there's some terminological disagreement, to boot. So to amplify a bit, what he's (probably) terming a symbolic reference, I think I'd call dynamic method selection, and it does, in fact, answer your concern (though it also occasionally gives me the heebie-jeebies). Since method lookup (and loading) are done at 'run-time' (an admittedly blurry distinction) you can do something like the following:
use XML::Simple ':strict'; # since example code doesn't have # backward-compatibility issues use DBX; use strict; # of course! use warnings; my $config = XMLin "config.xml"; # XML left as an exercise to the re +ader my $driver = $config->{driver}; my $connstr = $config->{connection_string}; my $SQL = $config->{query}; my $conn = DBX->$driver($connstr, "", ""); my $rs = $conn->query($SQL); while($rs) { print $rs->field("client") . "\n"; $rs->field("client", "test"); $rs->move_next; }
This does not, of course, prove that you can do anything with DBX that you can't do with DBI--to do that, I'd have to know something about DBX, and have used DBI more than twice. But it's all I have to offer, so I hope it sheds a little light. :-)
In reply to Re^n: DBX offers simplified access to the DBI
by ChemBoy
in thread DBX offers simplified access to the DBI
by batkins
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |