Beispiel mit Datenbank

  

Dieses Beispiel zeigt grundlegende Verwendung von DBI-Modul von Perl. Die Datenbank enthält Datensätze von Personen, die in eine E-Mail-basierte Teilnahme "Brieffreund" Service wünschen. Abonnenten geben ihre E-Mail-Adresse, nur wenige persönliche Informationen und eine Reihe von Interessen aus einer vordefinierten Liste von rund 100 möglichen Themen ausgewählt. Suche kann für andere Teilnehmer, die einige gemeinsame Interessen Aktie gemacht werden, und erfüllen bestimmte Einschränkungen. Die Datenbank hat nur eine Tabelle, die Zeilen zu charakterisieren Teilnehmer zu diesem "E-Pal-Dienst. Jeder Teilnehmer hat eine E-Mail-Adresse (der Einfachheit halber davon ausgegangen, dass fit in eine 32-stellige Feld); dieser muss eindeutig sein, und dient als Primärschlüssel. Abonnenten der Regel identifizieren sich als männlich oder weiblich, aber können nicht auf ihr Geschlecht angeben (in diesem Fall werden sie klassifiziert werden als "e-Personen"). Abonnenten können Beschränkungen für die Art von Person, mit der sie entsprechen wollen, geben Sie (mit Angabe männlich, weiblich, E-Person oder eine). Der Einfachheit halber sind ein Teilnehmer Interessen vertreten mit fünf separaten Ganzzahlfelder. Die Tabelle hat folgende Definition:

CREATE TABLE EPAL (email varchar (32) NOT NULL, Typ varchar (8) NOT NULL, wollen varchar (8) NOT NULL, interest1 Zahl (4), interesse2 Zahl (4), interest3 Zahl (4), interesse4 Zahl (4 ), interest5 Zahl (4), CONSTRAINT id_pkey PRIMARY KEY (email), type_check CONSTRAINT CHECK (Art IN ( 'MALE', 'FEMALE', 'EPERSON')), want_check CONSTRAINT CHECK (wollen in ( 'MALE', 'FEMALE ',' EPERSON ',' ANY ')));

Die 'check' Zwänge sind nicht besonders wichtig und kann weggelassen werden, wenn die Datenbank, die Sie verwenden, unterstützt keine derartigen Beschränkungen gelten, die Programm-Code im Wesentlichen Duplikate dieser Kontrollen. Das Beispiel-Programm ist ein eigenständiges Perl-Programm Lesen von Daten von der Tastatur und arbeitet direkt mit der Datenbank. Befehle können, um das Programm, um Datensätze in die Datenbank aufzunehmen oder die Abfrage gegeben werden. Der Code kann angepasst werden, um ein CGI-Skript, die anerkannten Daten in HTML-Formularen eingegebenen Form, dies würde zu einer webbasierten E-Pal-Service - etwas eher nützlich als diese Standalone-Version. Sehr ähnlich Input-Daten sind für Aufnahme und zusätzlich erforderliche Sucheinträge. Die Nutzer müssen ihre eigenen "geben Typ", der "Art" der Person, mit der sie entsprechen wollen, müssen fünf und Interessen aus der Liste der vordefinierten Interessen zu wählen, wenn ein Eintrag hinzugefügt werden, die Eingabedaten müssen auch eine E-Mail Adresse. Die Kriterien für ein erfolgreiches Spiel auf der Suche sind:

Der Wert für "Typ" im Datensatz erfüllt die "wollen" Anforderungen eines Antrags - mit dem überschreiben, dass ein Antrag "wollen = any 'passt zu jedem Wert in das Feld. Der "Typ" in der Suchanfrage angegeben erfüllt die "wollen" Anforderungen gegeben in der Platte - wieder mit 'any', die von allen möglichen Arten Antrag abgestimmt. Die zwei unterschiedliche Interessen haben eine nicht-Null-Kreuzung (Interessen sind als Zahlen im Bereich von 1-100 dargestellt, sie sind nicht unbedingt zu bestellen). Die Matching-Kriterien lassen sich nur schwer als SQL-Auswahl Bedingung auszudrücken, es ist einfacher für das Programm, um alle Datensätze abzurufen, und die Anwendung der Kriterien programmatisch. Das Programm verwendet eine Reihe von globalen Variablen, und jedes Unterprogramm hat lokale Variablen. Die etwas größeren Größe des Programms erhöht sich das Risiko der Verwendung von Fehlern, die sich aus implizite Deklaration von Variablen, oder die Verwendung von nicht initialisierten Variablen. Es lohnt sich, Ändern des Modus der Perl-Interpreter, so dass alle Variablen müssen deklariert werden. Angeben der Richtlinie "use strict" zu Beginn des Programms macht dies zu ändern.

Die wichtigste Zeile wird die Initialisierungs-Routine, die eine Datenbank-Verbindung und richtet Tabelle erstellt. Die wichtigste Funktion ist dann ein "Menü-Option" Loop-Handling-Kommandos durch den Benutzer eingegeben. Die Befehle behandelt werden 'add', 'search', 'Liste' (Listen Inhalte von Interesse Liste) und 'quit' ein. Der Code ist:

initialisieren, während (1) (my $ cmd; print "Geben Sie den Befehl (hinzufügen, suchen, Liste (Beteiligungen), quit):"; $ cmd =  If ($ cmd = ~ / quit / i) (last;) elsif ($ cmd = ~ / search / i) (doSearch;) elsif ($ cmd = ~ / add / i) (doAdd;) elsif ($ cmd = ~ / Liste / i) (print "Das Interesse Liste @ interestlist \ n";) else (print "Befehl nicht erkannt \ n";))

Die Initialisierung Routine erstellt einen Hash, Karten Interesse Thema, um Identifier Number. Nutzer müssen ihre Interessen zu geben und deren Überprüfung, hier der Hash dient als Lookup-System schneller als die ursprüngliche Liste. Die anderen Aufgaben für die Initialisierungs-Routine sind zur Eröffnung einer Datenbank-Verbindung und die Vorbereitung der sowohl eine einfache SQL-Abfrage und Auswahl einer parametrisierten SQL-Anweisung erarbeiten, die verwendet werden, um Datensätze eingeben müssen. Die INSERT-Anweisung erfordert acht Werte gebunden - E-Mail-Adresse, 'Typ', 'wollen' und fünf Interesse Identifikatoren.

sub initialize (my ($ id, $ interest); $ id = 0; foreach $ Interesse (@ interestlist) ($ ($ interesttable Interesse) = $ id $ id + +;) $ dbh = DBI-> connect ($ data_source, "HSimpson", "Doh", (AutoCommit => 1)) | | die "Konnte keine Verbindung zu \ n"; searchHandle $ db = $ dbh-> ( "SELECT * FROM EPAL"); $ insertHandle = $ Vorbereitung dbh-> prepare ( "INSERT INTO epal VALUES (?,?,?,?,?,?,?,?)");)

Die doAdd Funktion verwendet drei einfachen Hilfsfunktionen (owntype, wanttype, getinterests) auf Benutzereingaben zu erhalten. Die getinterests Funktion wiederholt wird der Benutzer aufgefordert, bis Daten zur Festlegung fünf Interessen korrekt eingegeben wurden, es gibt eine Liste mit den entsprechenden Kennung Zahlen. Beachten Sie den Aufruf der Funktion ausführen, dies explizit spezifiziert drei Argumente und der Fünf-Elemente-Array Interesse. Dies bedeutet die Voraussetzungen für die acht Werte entsprechen - schließlich verbindet Perl alle Argumente in einer einzigen Liste sowieso, und dann spaltet sich die Argumente innerhalb der Funktion.

doAdd sub (my ($ dir, $ Wunsch, $ email, @ Interessen); $ you = owntype $ Wunsch = wanttype; @ Interessen = getinterests; print "Ihre E-Mail-Adresse:"; $ email =  ; Chomp ($ email); $ insertHandle-> execute ($ email, $ dir, $ Wunsch, @ Interessen) | | die "Datensatz konnte nicht, weil $ insert DBI:: errstr";)

Die Suchfunktion verwendet ebenfalls den Hilfsfunktionen (owntype, wanttype und getintersts), um Daten Charakterisierung der Suchende zu erhalten. Es läuft dann die SQL-Suchanfrage: "wählen Sie alles von der EPAL Tisch". Jeder Datensatz wird in einer Liste ($ read searchHandle-> fetchrow_array). Die abgerufenen Daten werden dann gegen den Antrag von Daten (ein Teil der ungewöhnlichen "zurück Perl-to-Front" bedingte Tests sind in diesem Code dargestellt geprüft).

Ein Artikel eingereicht von Michael Barrbay


Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle.
Wichtig: Dieser Artikel "Datenbank-Beispiel" wurde durch ein automatisches Software übersetzt. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.


Online: 259 users browsing the articles directory