Quelqu'un peut-il perdre une lumière sur ce que DBI et DBD sont exactement la lumière? Quand devrait-il être utilisé et les avantages d'utiliser un sur l'autre. p>
5 Réponses :
DBI est l'interface. DBD sont les implémentations de cette interface. P>
Sorte de. Cela ressemble plus à DBI est l'interface externe et DBD est l'interface interne. DBD ne sait pas sur DBI (théoriquement) et l'utilisateur de DBI ne connaît pas le DBD.
DBI est une bibliothèque d'accès à la base de données, tandis que les DBD sont des "pilotes" utilisés par DBI pour accéder à une base de données particulière (par exemple. Il y a un DBD pour MySQL, un autre pour PostgreSQL, etc.). Vous devez utiliser DBI plutôt que DBDS directement. P>
du DCI DOCS :
ââââ Scope of DBI ââââ âââââ âââââââââââââââââââ âââââââââââââââââââ âââââââââââ â âââ⤠XYZ Driver âââ⤠XYZ Engine â â Perl â â â âââââââââââââââââââ âââââââââââââââââââ â script â â A â â D â âââââââââââââââââââ âââââââââââââââââââ â using âââ⤠P âââ⤠B âââ⤠Oracle Driver âââ⤠Oracle Engine â â DBI â â I â â I â âââââââââââââââââââ âââââââââââââââââââ â API â â âââ âââ â methods â â âââ âââ Other drivers âââââââââââ â âââ âââ âââââ
Utilisez-les ensemble. Par exemple, avec MySQL : xxx pré>
si vous parlez à un Oracle base de données, vous pourrez peut-être vous éloigner de ne changer que le $ data_source code> argument sur
DBI :: Connect CODE>
: P> $dbh = DBI->connect("dbi:Oracle:host=$host;sid=$sid", $user, $password);
DBI signifie Interface de base de données em>. DBD signifie pilote de base de données em>. P>
En tant que programmeur, vous devez toujours utiliser l'interface (DBI). L'interface, à son tour, utilise le pilote. La raison d'utiliser DBI au lieu d'utiliser DBD directement est qu'il fournit une couche d'abstraction cohérente pour travailler avec des bases de données. Il y a de nombreux modules DBD mais il vous suffit d'apprendre une interface. De plus, cela rend relativement facile à modifier la base de données que votre application utilise simplement en modifiant le pilote. L'interface est la même. (La syntaxe de la requête pourrait être un peu différente.) P>