Next Previous Contents

11. Perl Database Interface (DBI) Driver για PostgreSQL

11.1 Διασύνδεση Perl 5 με PostgreSQL

PERL είναι ακρωνύμιο του 'Practical Extraction και Report Language'. Η Perl είναι διαθέσιμη σχεδόν σε κάθε λειτουργικό και πλατφόρμα hardware. Μπορείτε να χρησιμοποιήστε Perl σε Windows95/NT, όλα τα Unix (Solaris, HPUX, AIX, Linux, Irix, SCO κλπ.), σε mainframe MVS, desktop OS/2, OS/400, Amdahl UTS και πολλά άλλα. Η Perl τρέχει ΑΚΟΜΗ και σε πολλά μη δημοφιλή/γενικά άγνωστα λειτουργικά συστήματα και υλικά!!

Έτσι, μην εκπλαγείτε αν δείτε την perl να τρέχει σε πολλά όχι συχνά χρησιμοποιούμενα λειτουργικά.

Μπορείτε να φανταστείτε την τεράστια βάση χρηστών και προγραμματιστών σε Perl.

Η διασύνδεση Perl με PostgreSQL περιλαμβάνεται στη διανομή της PostgreSQL. Κοιτάξτε στον κατάλογο src/pgsql_perl5.

11.2 Perl Database Interface DBI

ΤΙ ΕΙΝΑΙ ΤΟ DBI ;

Το παρακάτω είναι απόσπασμα από την κεντρική σελίδα του Perl DBI.

To Perl Database Interface (DBI) είναι ένα προγραμματιστικό interface (API) σε Perl για διασύνδεση με βάσεις δεδομένων. Οι προσδιορισμοί του Perl DBI API ορίζουν ένα σύνολο από ρουτίνες, μεταβλητές και συμβάσεις που παρέχουν ένα συνεκτικό interface βάσης δεδομένων ανεξάρτητο από την πραγματική βάση που χρησιμοποιείται. Οι πληροφορίες για αυτό το τμήμα DBI προήλθε από το κείμενο 'DBI FAQ' το οποίο έχει γράψει ο Alligator Descartes το αναπαραγάγαμε με την άδειά του.

Οδηγός DBI για την PostgreSQL - DBD-Pg-0.89

Κατεβάστε το DBD-Pg-0.89.tar.gz από τα

ΑΠΑΙΤΗΣΕΙΣ:

Τεχνική υποστήριξη για το DBI

Παρακαλώ στείλτε τα σχόλιά σας και αναφορές λαθών στο

Συμπεριλάβετε παρακαλώ την έξοδο της εντολή perl -v, και perl -V, την έκδοση της PostgreSQL, την έκδοση του DBD-Pg, και την έκδοση του DBI στην αναφορά λαθών.

Τι είναι τα DBI, DBperl, Oraperl και *perl;

Όπως είπε και ο Tim Bunce, ο σχεδιαστής και συγγραφέας του DBI:

``Το DBI είναι ένα προγραμματιστικό interface (API) σε Perl για διασύνδεση με διασύνδεση με βάσεις δεδομένων. Οι προσδιορισμοί του DBI API ορίζουν ένα σύνολο από ρουτίνες, μεταβλητές και συμβάσεις που παρέχουν ένα συνεκτικό interface βάσης δεδομένων ανεξάρτητο από την πραγματική βάση που χρησιμοποιείται.''

Με απλά λόγια, το DBI interface επιτρέπει στους χρήστες να έχουν διάφανη πρόσβαση σε πολλαπλούς τύπους βάσεων. Έτσι, αν συνδέεστε την Oracle, Informix, mSQL, Sybase ή οποιαδήποτε άλλη βάση, δε χρειάζεται να γνωρίζετε τους υποκείμενους μηχανισμούς του επιπέδου 3GL. Το API που ορίζεται από το DBI θα δουλέψει σε όλους τους τύπους βάσεων.

Ένα παρόμοιο πλεονέκτημα είναι η ικανότητα να συνδεθείτε σε δύο βάσεις διαφορετικού τύπου μέσω του ίδιου perl script, πχ, θέλετε να διαβάσετε δεδομένα από μια βάση Oracle και να τα εισάγετε σε μια βάση Informix μέσα στο ίδιο πρόγραμμα. Το επίπεδο DBI σας επιτρέπει να το κάνετε αυτό απλά και ισχυρά.

DBperl είναι το παλιό όνομα για τις προδιαγραφές του interface. Χρησιμοποιείται συνήθως για να υποδηλώσει τα perl4 modules για διασύνδεση με βάσεις, όπως, oraperl, isqlperl, ingperl και λοιπά. Αυτά τα interfaces δεν είχαν στάνταρ API και γενικά δεν υποστηρίζονται.

Να μια λίστα από DBperl modules, το αντίστοιχο DBI ταίρι τους και πληροφορίες υποστήριξης. Ερωτήσεις σχετικά με τον οδηγό DBI θα πρέπει να απευθύνονται στη λίστα αλληλογραφίας dbi-users .

    Όνομα Module Απαιτούμενη Βάση     Συγγραφέας          DBI
    ------------ -----------------   ----------          ---
    Sybperl     Sybase              Michael Peppler     DBD::Sybase
                                    <mpeppler@datamig.com>
                                    http://www.mbay.net/~mpeppler
    Oraperl     Oracle 6 & 7        Kevin Stock             DBD::Oracle
                                    <dbi-users@fugue.com>
    Ingperl     Ingres              Tim Bunce &             DBD::Ingres
                                    Ted Lemon
                                    <dbi-users@fugue.com>
    Interperl   Interbase           Buzz Moschetti      DBD::Interbase
                                    <buzz@bear.com>
    Uniperl     Unify 5.0           Rick Wargo          -
                                    <rickers@coe.drexel.edu>
    Pgperl      Postgres            Igor Metz           DBD::Pg
                                    <metz@iam.unibe.ch>
    Btreeperl   NDBM                John Conover        SDBM;
                                    <john@johncon.com>
    Ctreeperl   C-Tree              John Conover        -
                                    <john@johncon.com>
    Cisamperl   Informix C-ISAM     Mathias Koerber     -
                                    <mathias@unicorn.swi.com.sg>
    Duaperl     X.500 Directory     Eric Douglas        -
                User Agent
Παρόλα αυτά, μερικά DBI modules έχουν επίπεδα προσομοίωσης DBperl. Έτσι, η DBD::Oracle έρχεται με ένα επίπεδο προσομοίωσης Oraperl, που σας επιτρέπει να τρέξετε κληρονομικά oraperl scripts χωρίς αλλαγές. Το επίπεδο προσομοίωσης μεταφράζει τις κλήσεις του oraperl API σε κλήσεις DBI και τις εκτελεί μέσω του DBI switch.

Να ένας πίνακας με πληροφορίες για τα επίπεδα προσομοίωσης :

    Module          Επίπεδο προσομοίωσης      Κατάσταση
    ------          ---------------------     ------
    DBD::Oracle     Oraperl                   Ολοκληρωμένο
    DBD::Informix   Isqlperl                  Υπό ανάπτυξη
    DBD::Sybase     Sybperl                   Δουλεύει; (χρειάζεται επαλήθευση )
    DBD::mSQL       Msqlperl                  Εκδόθηκε πειραματικά με την
                                              DBD::mSQL-0.61
Η προσομοίωση Msqlperl είναι μια ειδική περίπτωση. Το Msqlperl είναι ένας οδηγός perl5 για mSQL βάσεις, αλλά δε συμμορφώνεται με τις προδιαγραφές του DBI. Η χρήση αποδοκιμάζεται ρητά για χάρη του DBD::mSQL. Μπορείτε να κατεβάσετε την Msqlperl από τη CPAN από το:

Προδιαγραφές DBI

Υπάρχουν λίγες πηγές πληροφορίας για DBI.

Υπάρχουν δύο προδιαγραφές διαθέσιμες σε αυτό το link, οι νέες Πρόχειρες (Draft) DBI προδιαγραφές, αυτό το κείμενο αλλάζει καθημερινά καθώς η ομάδα ανάπτυξης βαδίζει ορος ένα σταθερό interface, και οι παλιές ιστορικές DBperl προδιαγραφές από τις οποίες αναπτύχθηκε το τρέχον DBI interface.

Το τελευταίο κείμενο πρέπει να διαβαστεί μόνο και μόνο από ιστορικό ενδιαφέρον και να μη χρησιμοποιηθεί ως εγχειρίδιο προγραμματισμού, ή ως έγκυρο με οποιαδήποτε έννοια. Παρόλα αυτά, παραμένει μια ακόμη χρήσιμη πηγή αναφοράς.

Τεκμηρίωση POD Τα PODs είναι κομμάτια τεκμηρίωσης που ενσωματώνονται συνήθως σε προγράμματα perl που τεκμηριώνουν τον κώδικα ``in place'', παρέχοντας ένα χρήσιμο βοήθημα για προγραμματιστές και χρήστες modules. Το POD για DBI και drivers γίνεται όλο και περισσότερο κοινότοπο, και η τεκμηρίωση για αυτά τα modules μπορεί να διαβαστεί με τις παρακάτω εντολές.

Προδιαγραφές DBI Τα POD για προδιαγραφές DBI μπορεί να διαβαστεί με την εντολή:

perldoc DBI

Oraperl Οι χρήστες του επιπέδου προσομοίωσης Oraperl που έρχεται μαζί με την DBD::Oracle, μπορούν να συνεχίσουν να διαβάσουν για το πως να προγραμματίσουν με το Oraperl πληκτρολογώντας:

perldoc Oraperl

Αυτό θα παράγει ένα ενημερωμένο αντίγραφο της αρχικής σελίδας βοηθείας oraperl, που γράφτηκε από τον Kevin Stock για perl4. Το API της oraperl εμφανίζεται και περιγράφεται εκεί πλήρως.

DBD::mSQL Οι χρήστες του DBD::mSQL module μπορούν να διαβάσουν για μερικές private functions και ιδιομορφίες αυτού του οδηγού (driver) πληκτρολογώντας:

perldoc DBD::mSQL

Συχνά Διατυπωμένες Ερωτήσεις (FAQ)

To κείμενο, Frequently Asked Questions είναι επίσης διαθέσιμο ως τεκμηρίωση σε POD ! Μπορείτε να το διαβάσετε στο δικό σας σύστημα, πληκτρολογώντας:

perldoc DBI::FAQ

Αυτό μπορεί να είναι βολικότερο για ανθρώπους που δεν είναι συνδεδεμένοι μόνιμα ή άνετα, στο Internet.

Το POD γενικά Πληροφόρηση για τη συγγραφή POD, και για την φιλοσοφία του POD γενικότερα, μπορεί να διαβαστεί γράφοντας:

perldoc perlpod

Χρήστες που έχουν εγκαταστήσει το Tk module ίσως να ενδιαφέρονται να μάθουν πως υπάρχει διαθέσιμος ένας POD αναγνώστης βασισμένος σε Tk που λέγεται tkpod, και διαμορφώνει POD σε μια βολική και αναγνώσιμη μορφή.

``Περιπλανήσεις'', ``Μεζεδάκια'' και Παρατηρήσεις Υπάρχει μια σειρά από περιστασιακές ``περιπλανήσεις'' από διάφορους στις λίστες αλληλογραφίας για DBI.

``DBI -- The perl5 Database Interface'' Αυτό είναι ένα άρθρο από τον Alligator Descartes και τον Tim Bunce για τη δομή του DBI. Δημοσιεύτηκε στο τεύχος 5 του ``The Perl Journal''. Είναι υπερβολικά καλό. Πηγαίνετε και αγοράστε το περιοδικό. Εδώ που τα λέμε, αγοράστε όλα τα τεύχη! ``The Perl Journal''s WWW site is:

``DBperl'' Αυτό το άρθρο, το οποίο δημοσιεύτηκε στην έκδοση Νοεμβρίου του 1996 ``Dr. Dobbs Journal'' ασχολείται με DBperl.

``The Perl5 Database Interface'' Αυτό είναι ένα βιβλίο γραμμένο από τον Alligator Descartes και εκδόθηκε από τους O'Reilly και Associates.

Λίστες Αλληλογραφίας υπάρχουν τρεις λίστες αλληλογραφίας για DBI που διαχειρίζεται ο Ted Lemon. Σε όλες μπορείτε να γραφτείτε και να ξεγραφτείτε από το World Wide Web στη διεύθυνση :

Οι λίστες στις οποίες μπορούν να συμμετέχουν οι χρήστες είναι:

dbi-announce Αυτή η λίστα αλληλογραφίας μόνο για ανακοινώσεις. Αν δεν μπορείτε να χρησιμοποιήσετε την φόρμα της παραπάνω WWW σελίδας, εγγραφείτε στη λίστα με τον ακόλουθο τρόπο:

με κείμενο στο σώμα (body) του μηνύματος 'subscribe'

dbi-dev Η λίστα αυτή στοχεύει σε χρήση από τους προγραμματιστές που κάνουν ανάπτυξη, που συζητάνε ιδέες και έννοιες για τα των DBI interface, API και driver. Αν δεν μπορείτε να χρησιμοποιήσετε την φόρμα της παραπάνω WWW σελίδας, εγγραφείτε στη λίστα με τον ακόλουθο τρόπο:

με κείμενο στο σώμα (body) του μηνύματος 'subscribe'

dbi-users Αυτή η λίστα αλληλογραφίας είναι μια λίστα γενικών συζητήσεων που χρησιμοποιείται για αναφορές σφαλμάτων, συζήτηση προβλημάτων και γενικές αναζητήσεις. Αν δεν μπορείτε να χρησιμοποιήσετε την φόρμα της παραπάνω WWW σελίδας, εγγραφείτε στη λίστα με τον ακόλουθο τρόπο:

με κείμενο στο σώμα (body) του μηνύματος 'subscribe'

Χρονικά/Αρχεία των Λιστών Αλληλογραφίας

Προβλήματα Μεταγλώττισης ή αλλιώς "Κόπηκε στις Εξετάσεις!"

Αν έχετε core dump, δοκιμάστε το module Devel::CoreStack για να δημιουργήσετε ένα stack trace από το core dump. Το Devel::CoreStack βρίσκεται στο CPAN στο:

Στείλτε Email στη λίστα dbi-users το stack trace, την έκδοση των modules, της perl, τα τεστ που κάνατε, την έκδοση του λειτουργικού συστήματος και όποιες άλλες σχετικές πληροφορίες. Όσες περισσότερες πληροφορίες στείλετε, τόσο γρηγορότερα θα ανιχνεύσουν οι προγραμματιστές τα προβλήματα. Αν δε μας στείλτε τίποτα, τότε μην περιμένετε τίποτα και από εμάς.

-->

Υποστηρίζεται το DBI κάτω από πλατφόρμες Windows 95 / NT ;

Η μεταφορά των DBI και DBD::Oracle Win32 είναι τώρα ένα στάνταρ τμήμα του DBI, έτσι, αν κατεβάσετε έκδοση του DBI μεγαλύτερη του 0.81 θα πρέπει να δουλεύει μια χαρά. Μπορείτε να έχετε πρόσβαση στις βάσεις Microsoft Access και SQL-Server από το DBI μέσω ODBC. Μαζί με το DBI-0.79 (και μετέπειτα) δίνεται ένα πειραματικό DBI 'επίπεδο προσομοίωσης' για το module Win32::ODBC. Ονομάζεται DBI::W32ODBC. Θα χρειαστείτε το module Win32::ODBC.

Τι είναι το DBM; Και γιατί θα πρέπει να χρησιμοποιώ το DBI στη θέσητου;

Το UNIX ευλογήθηκε από την αρχή με απλές ``βάσεις'' βασισμένες σε επίπεδα αρχεία, γνωστές σαν σύστημα dbm. Το dbm σας επιτρέπει να αποθηκεύετε δεδομένα σε αρχεία, και να ανακτάτε τα δεδομένα γρήγορα Παρόλαυτά, αυτό έχει και σοβαρά μειονεκτήματα.

Κλείδωμα Αρχείων (File Locking)

Τα συστήματα dbm δεν παρείχαν ιδιαίτερα ισχυρές δυνατότητες για κλείδωμα αρχείων, ούτε καμία ικανότητα για τη διόρθωση προβλημάτων που προέκυπταν από ταυτόχρονες εγγραφές [στη βάση].

Αυθαίρετες Δομές Δεδομένων (Arbitrary Data Structures)

Τα συστήματα dbm επιτρέπουν μόνο μια σταθερή δομή δεδομένων: ζευγάρια κλειδιών-τιμών (key-value pairs). Αυτή η τιμή μπορεί να είναι ένα σύνθετο αντικείμενο, όπως ένα [ C ] struct, αλλά το κλειδί πρέπει να είναι μοναδικό. Αυτό ήταν μεγάλος περιορισμός στη χρησιμότητα των συστημάτων dbm.

Παρόλαυτά, τα συστήματα dbm ακόμα είναι χρήσιμα για χρήστες με απλά σύνολα δεδομένων και περιορισμένους πόρους, μια και είναι γρήγορα, δυνατά και εξαιρετικά καλά ελεγμένα. Τα modules της Perl για την πρόσβαση σε συστήματα dbm έχουν ενσωματωθεί τώρα στην διανομή της, μέσω του module AnyDBM_File.

Περιληπτικά, το DBM είναι μια ικανοποιητικότατη λύση για (κατά κανόνα) read-only βάσεις, ή μικρά και απλά σύνολα δεδομένων. Παρόλαυτά, για περισσότερο ισχυρά και επεκτάσιμα σύνολα δεδομένων, χωρίς ούτε καν να αναφερθούμε και σε αξιόπιστο transactional locking, συνιστούμε στους χρήστες να χρησιμοποιήσουν DBI.

Υποστηρίζεται < το τάδε χαρακτηριστικό > στο DBI;

Θεωρώντας ότι το χαρακτηριστικό που ζητήσατε είναι ένα μη-στάνταρ, εξαρτώμενο από κάποια συγκεκριμένη βάση, χαρακτηριστικό, τότε η απάντηση είναι όχι.

Το DBI αντανακλά ένα γενικό API που θα δουλέψει για τις περισσότερες βάσεις, και δεν παρέχει καμία επιπλέον λειτουργικότητα για κάποια συγκεκριμένη βάση δεδομένων (database-specific functionality).

Παρόλαυτά, οι συγγραφείς των οδηγών μπορούν, αν το επιθυμούν, να συμπεριλάβουν hooks προς εξειδικευμένες λειτουργίες/χαρακτηριστικά κάποιας βάσης δεδομένων μέσω της μεθόδου func που ορίζεται στο DBI API. Όσοι αναπτύσσουν scripts θα πρέπει να σημειώσουν πως η λειτουργικότητα που παρέχεται μέσω των μεθόδων func είναι απίθανο να μεταφερθεί σε άλλες βάσεις.

Χρησιμεύει καθόλου το DBI για προγραμματισμό σε CGI;

Με μια λέξη, ναι! Το DBI είναι εξαιρετικά χρήσιμο για προγραμματισμό σε CGI! Στην πραγματικότητα, θα τολμούσα να πω ότι ο προγραμματισμός σε CGI είναι μία από τις κύριες χρήσεις του DBI.

To DBI δίνει την ικανότητα στους προγραμματιστές CGI να ενισχύσουν τις βάσεις που έχουν WWW-fronted, πράγμα που παρέχει στους χρήστες τη δυνατότητα να παίξουν με τεράστιες ποσότητες δομημένων δεδομένων. Επίσης, στην περίπτωση που ένα site έχει περισσότερη κίνηση από ότι ο server της βάσης δεδομένων μπορεί να αντιμετωπίσει, το DBI δίνει τη δυνατότητα αναβάθμισης του server της βάσης δεδομένων στο παρασκήνιο, χωρίς αλλαγές στα cgi scripts.

Πώς πετυχαίνω ταχύτερους χρόνους σύνδεσης με DBD Oracle και CGI;

Ο Apache httpd διατηρεί μια δεξαμενή (pool) από παιδιά του (httpd children) για να εξυπηρετούν τις αιτήσεις των clients.

Χρησιμοποιώντας το module του Apache mod_perl του Doug MacEachern, ο μεταφραστής της perl (perl interpreter) ενσωματώνεται στα παιδιά του httpd. Τα CGI, DBI, και τα υπόλοιπα αγαπημένα σας modules μπορούν να φορτωθούν κατά την εκκίνηση κάθε παιδιού (child). Αυτά τα modules δε θα ξαναφορτωθούν εάν δεν αλλάξουν στο δίσκο.

Για περισσότερες πληροφορίες σχετικά με τον Apache, δείτε το Apache Project's WWW site:

Πώς επιτυγχάνω μόνιμες (persistent) συνδέσεις μεταξύ DBI και CGI

Χρησιμοποιώντας το module Apache::DBI module του Edmund Mergl, τα logins στη βάση δεδομένων αποθηκεύονται και αντιστοιχίζονται σε ένα httpd child. Αν η εφαρμογή σας βασίζεται σε έναν μόνο χρήστη της βάσης δεδομένων, η σύνδεση μπορεί να γίνεται με κάθε child. Μέχρι σήμερα, οι συνδέσεις στις βάσεις δεδομένων δεν μπορούν να μοιράζονται μεταξύ διαφορετικών παιδιών του httpd.

Μπορείτε να κατεβάσετε το Apache::DBI από τη CPAN μέσω:

``Όταν τρέχω ένα perl script από την γραμμή εντολής, δουλεύει, αλλά όταν το τρέχω από τον httpd, αποτυγχάνει!'' Γιατί;

Βασικά, ένας λόγος για τον οποίο μπορεί να συμβαίνει αυτό είναι ότι ο χρήστης από τον οποίο τρέξατε το script στη γραμμή εντολών έχει σωστά ρυθμισμένα τις μεταβλητές του περιβάλλοντος, στην περίπτωση του DBD::Oracle, μεταβλητές όπως $ORACLE_HOME, $ORACLE_SID ή TWO_TASK.

Η διεργασία httpd τρέχει συνήθως κάτω από το χρήστη nobody, πράγμα που σημαίνει ότι δεν έχει ρυθμισμένο το περιβάλλον του. Οποιοδήποτε script επιχειρήσει να τρέξει κάτω από αυτήν την κατάσταση θα αποτύχει σίγουρα.

Για να λύσετε αυτό το πρόβλημα, θέστε το περιβάλλον για τη βάση σας σε ένα μπλοκ BEGIN ( ) στην αρχή του script σας. Έτσι θα διορθωθεί το πρόβλημα.

Παρόμοια, θα πρέπει να ελέγξετε το logfile με τα httpd λάθη για τυχόν ενδείξεις, όπως και τα ``Idiot's Guide To Solving Perl / CGI Problems'' και ``Perl CGI Programming FAQ'' για περισσότερες πληροφορίες. Είναι απίθανο το πρόβλημα να έχει σχέση με το DBI. Διαβάστε και τα δύο αυτά κείμενα προσεκτικά!

Μπορώ να κάνω multi-threading με το DBI;

Μέχρι την ημερομηνία αυτού του FAQ, όχι. Η perl δεν υποστηρίζει multi-threading. Παρόλαυτά, το multi-threading αναμένεται να γίνει μέρος του πυρήνα της διανομής της perl στην έκδοση 5.005, που σημαίνει ότι το DBI θα μπορεί να υποστηρίζει multi-threading αρκετά σύντομα μετά απ' αυτό.

Για να δείτε παραδείγματα κώδικα OCI για την Oracle που έχει multi-threaded εντολές SELECT, πηγαίνετε στο:

Πώς μπορώ να καλέσω stored procedures με το DBI;

Αν υποθέσουμε ότι έχετε δημιουργήσει μια stored procedure μέσα σε κάποια βάση, πχ, στην Oracle, μπορείτε να χρησιμοποιήσετε το $dbh->do για να εκτελέσετε άμεσα τη διαδικασία (procedure). Για παράδειγμα,

$dbh->do( "BEGIN someProcedure END" );

Πώς μπορώ να πάρω τις τιμές που επιστρέφονται από τις stored procedures με το DBI;

Θυμηθείτε, όμως, να κάνετε έλεγχο για λάθη!

    $sth = $dbh->prepare( "BEGIN foo(:1, :2, :3); END;" );
    $sth->bind_param(1, $a);
    $sth->bind_param_inout(2, \$path, 2000);
    $sth->bind_param_inout(3, \$success, 2000);
    $sth->execute;

Πώς μπορώ να δημιουργήσω ή να καταστρέψω μια βάση δεδομένων με το DBI;

Η δημιουργία και διαγραφή μιας βάσης είναι έννοιες πολύ αφηρημένες για να υποστηρίζονται ικανοποιητικά από το DBI. Για παράδειγμα, η Oracle δεν υποστηρίζει καν την έννοια της διαγραφής της βάσης! Στην Oracle επίσης, ο διακομιστής της βάσης δεδομένων (database server) είναι ουσιαστικά η βάση, ενώ στην mSQL, η διεργασία του διακομιστή (server process) τρέχει μια χαρά χωρίς να έχει δημιουργηθεί καμία βάση σε αυτόν. Το πρόβλημα είναι τόσο ανόμοιο για να το θίξουμε.

Γι' αυτό το λόγο, μερικοί οδηγοί υποστηρίζουν δημιουργία και διαγραφή βάσεων μέσω των private func methods. Δείτε την τεκμηρίωση των οδηγών που χρησιμοποιείτε για να δείτε αν υποστηρίζουν αυτό το μηχανισμό.

Πώς διαχειρίζεται το DBI τις τιμές NULL ;

Οι τιμές NULL στο DBI αντιμετωπίζονται όπως η τιμή undef. Οι τιμές NULL μπορούν καταχωρηθούν στις βάσεις ως NULL, για παράδειγμα:

    $rv =
        $dbh->do( "INSERT INTO table VALUES( NULL )" );
αλλά όταν ερωτηθούν, οι τιμές NULL θα πρέπει να συγκριθούν με την undef. Αυτό είναι στάνταρ για όλους τους οδηγούς.

Τι είναι αυτές οι μέθοδοι func (func methods);

Η μέθοδος func ορίζεται στο DBI σαν το σημείο εισόδου για λειτουργικότητα εξαρτώμενη από τη βάση, πχ, η ικανότητα να δημιουργήσετε ή να διαγράψετε βάσεις. Το να καλέσετε αυτές τις μεθόδους που εξαρτώνται από τους οδηγούς είναι απλό, για παράδειγμα, για να καλέσετε τη μέθοδο createDatabase που παίρνει μια παράμετρο, θα γράφαμε:

    $rv =
        $dbh->func( 'argument', 'createDatabase' );
Όσοι αναπτύσσουν λογισμικό θα πρέπει σημειώσουν ότι οι μέθοδοι func δεν είναι μεταφέρσιμες μεταξύ διαφορετικών βάσεων.

Εμπορική Υποστήριξη και Εκπαίδευση

Το Interface της Perl5 για βάσεις είναι ένα ΔΩΡΕΑΝ λογισμικό. ΕΡΧΕΤΑΙ ΧΩΡΙΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ ΟΠΟΙΟΥΔΗΠΟΤΕ ΕΙΔΟΥΣ.

Παρόλαυτά, μερικοί οργανισμοί παρέχουν είτε τεχνική υποστήριξη είτε προγράμματα εκμάθησης του DBI.

Perl Clinic : Η Perl Clinic μπορεί να κλείσει συμβόλαια για εμπορική υποστήριξη σε Perl, DBI, DBD::Oracle και Oraperl. Υποστήριξη παρέχεται από την εταιρεία στην οποία δουλεύει ο Tim Bunce, ο συγγραφέας του DBI. Για περισσότερες υπηρεσίες σχετικά με τις υπηρεσίες τους, δείτε το :


Next Previous Contents