FLA: Datenbank-Verbindung in CGI

Hallo,

ich setze einen Apache unter Windows 2000 ein und möchte über CGI auf eine Access-Datenbank zugreifen. Über ein HTML-Interface sollen Daten aus der Access-Datenbank ausgelesen bzw. eingetragen werden.
Da ich bis vor kurzem ausschliesslich mit IIS / ASP gearbeitet habe, bin ich noch absoluter CGI-Neuling. Innerhalb meiner ASP-Scripts habe ich den DB-Zugriff über VB-Script realisiert und über SQL-Befehle auf die DB zugegriffen.

Ist das auch mit CGI möglich ? Oder lassen sich die ASP-Scripts irgendwie in CGI-Scripts konvertieren ?

Auf dem Webserver habe ich Apache 1.3.27 und Active Perl 5.8 installiert, das Ausführen von CGI- und Perl-Scripts ist bereits möglich.

Ich bin darüber hinaus am Überlegen, ob es nicht sinnvoller ist, anstatt der Access-DB eine SQL-DB einzusetzen. Ein SQL 7.0-Server steht mir zur Verfügung. Ist es möglich, die Access-DB in eine SQL-DB zu konvertieren ?

Víelen Dank !

Gruss
FLA

  1. Hi,

    ich setze einen Apache unter Windows 2000 ein und möchte über CGI auf eine Access-Datenbank zugreifen. Über ein HTML-Interface sollen ... über SQL-Befehle auf die DB zugegriffen.

    Ist das auch mit CGI möglich ? Oder lassen sich die ASP-Scripts

    Ja, natuerlich.
    Schau dir mal das Perlmodul DBI an.
    Da steht alles drin.

    irgendwie in CGI-Scripts konvertieren ?

    URG.

    Auf dem Webserver habe ich Apache 1.3.27 und Active Perl 5.8 installiert, das Ausführen von CGI- und Perl-Scripts ist bereits möglich.

    Ich bin darüber hinaus am Überlegen, ob es nicht sinnvoller ist, anstatt der Access-DB eine SQL-DB einzusetzen. Ein SQL 7.0-Server

    Unter Perl ist es fast egal, welche Datenbank du nimmst.
    Mit dem DBI-Modul kannst du laut perldoc auf mindestens 25 verschiedene Datenbanken zugreifen.
    Darunter natuerlich auch mSQL, mySQL, Oracle, Firebird/Interbase, Informix und ODBC.

    Bevor du aber MySQL nimmst, schau dir auch mal Firebird an.
    Das ist wie MySQL, nur dass es sicherer ist.

    »»steht mir zur Verfügung. Ist es möglich, die Access-DB in eine SQL-DB zu konvertieren ?

    Wenn die Datenbanken es schon nicht selbst können, sollte es möglich sein, sich unter Perl entsprechende Skripte selbst zu schreiben.

    Ciao,
     Wolfgang

    1. Hallo Wolfgang,
      vielen Dank für Deine schnelle Antwort.

      Wo finde ich denn das DBI-Modul ?

      URG.

      *lol* Hab' ich mir schon gedacht...  ;-)

      Bevor du aber MySQL nimmst, schau dir auch mal Firebird an.

      Das ist wie MySQL, nur dass es sicherer ist. <

      Inwiefern denn sicherer ?

      1. Hi,

        Wo finde ich denn das DBI-Modul ?

        Normalerweise sollte das bereits mitinstalliert worden sein.

        Wenn nicht, dann schau halt dort wo du das Perl her hast nach Modulen oder geh zu dem CPAN-Archiv. cpan.org.

        URG.

        *lol* Hab' ich mir schon gedacht...  ;-)

        Bevor du aber MySQL nimmst, schau dir auch mal Firebird an.
        Das ist wie MySQL, nur dass es sicherer ist. <

        Inwiefern denn sicherer ?

        Firebird erlaubt es, einzelne Transaktionen zu wiederholen und so bei einem Crash einen wirklich fest definierten datenbankzustand zu haben.
        Denn wenn du einfach nur zu einen bestimmten Zeitpunkt ein Dump
        hast und nur diesen dann sicherst, kann es sein, dass ein prozess nicht abgeschlossen in der DB ist.

        Also wenn z.B. ein Prozess über 15 Minuten irgendwelche Queries ausführst, aber innerhalb dieser 15 Minuten ein anderer (automatischer)  Prozess ein Sicherheitsdump macht, enthaelt der
        Dump natuerlich nicht alles was notwendig ist...

        Beispiel: Jemand hat ein Shopsystem und will von seinen neuen Kunden die bezahlte Rechnung registrieren.
        Der DB-Prozess geht los indem er dort vieleicht alle Kunden sucht.
        Dann geht der in einer Schleife durch und macht fuer jeden Kunden die Abrechnungund setzt Flags wie : hat gezahlt...
        Waährend der noch beim 100. von 1000 Kunden ist wird nun ein Backup gemacht.
        Ist noch kein Problem....
        Aber wenn es dann später ein Crash ist, wird dann das backup eingespielt, was dann ploetzlich sagt. Hey, da sind 900 Kunden die noch nicht gezahlt haben >:)

        Ausserdem ist Firebird etwas schneller und bietet ein paar mehr Funktionen :)

        Ciao,
         Wolfgang

        1. Vielen Dank nochmal, jetzt hab' ich auch die nötigen Module gefunden. Jetzt geht's ans Eingemachte !  ;-)

          Gruss
          FLA

        2. Hallo Wolfgang,

          nachdem ich das dbi.pm-Modul in meinem "\perl\lib"-Verzeichnis abgespeichert habe, bekomme ich jetzt beim Ausführen der Zeile

          'my $dbh = DBI->connect("dbi:Oracle:$data_source", $user, $password);'

          den folgenden Fehler :

          'Can't locate object method "connect" via package "DBI" ...'.

          Weisst Du, woran das liegen kann ?

          1. Hi

            'my $dbh = DBI->connect("dbi:Oracle:$data_source", $user, $password);'
            'Can't locate object method "connect" via package "DBI" ...'.
            Weisst Du, woran das liegen kann ?

            Hast du nur DBI.pm, oder auch DBI/Oracle.pm mitgeholt?

            Ciao,
             Wolfgang

            1. Hast du nur DBI.pm, oder auch DBI/Oracle.pm mitgeholt? <

              Nein, nur dbi.pm. Benötige ich das andere Modul auch ?

              Reicht es eigentlich aus, wenn ich die .pm-Dateien einfach in das "\perl\lib"-Verzeichnis speichere, oder muss ich die Module noch irgendwie installieren ?

              1. Hi,

                Hast du nur DBI.pm, oder auch DBI/Oracle.pm mitgeholt? <

                Nein, nur dbi.pm. Benötige ich das andere Modul auch ?

                Das DBI.pm ist der "Manager".
                Fuer die einzelnen Datenbanken jedoch gibt es dann jeweils
                ein eigenes Untermodul.

                Reicht es eigentlich aus, wenn ich die .pm-Dateien einfach in das "\perl\lib"-Verzeichnis speichere, oder muss ich die Module noch irgendwie installieren ?

                Uhmmm...Perl auf Windows...
                Les mal in der zugehörigen Readme-Datei; Da steht drin, wie
                man das installiert.

                Ciao,
                  Wolfgang

                1. Hi Wolfgang,

                  vielen Dank für Deine Tips.

                  da ich die Module über PPM nicht installieren kann (kein Download von ppm.activestate.com möglich), hab' ich mir die ZIPs direkt dort gezogen. In dem ZIP befindet sich eine dbi.ppd-Datei, ein Tar-Archiv und eine Readme. In der Readme steht folgendes drin, dass man den Befehl "ppm install DBI.pdd" ausführen soll. Dann erscheint bei mir aber erneut die Fehlermeldung "No valid repositories. Error: 500 Can't connect to ppm.ActiveState.com:80 <Bad hostname 'ppm.ActiveState.com').

                  Also hab' ich das Tar in mein "\perl\lib"-Verzeichnis ausgepackt und mein Script ausgeführt. Jetzt erscheint folgende Fehlermeldung : "Can't locate loadable object for module DBI in @INC <@INC contains: D:/perl/lib D:/perl/site/lib .> at D:/perl/lib/dbi.pm line 255

                  Ich versteh gar nichts mehr...  :-(