Halihallo Thomas
Win32::OLE ist leider auch nicht verfügbar. Inzwischen meine ich herausgefunden zu haben, dass DBD::ADO (nicht DBI::ADO?) sowieso Win32::OLE voraussetzt, so dass ich es damit versuchen möchte.
Naja, diese Abhängigkeit macht natürlich Sinn, wer programmiert schon
gerne zwei mal das gleiche :-)
Und ja, DBD ist der DataBaseDriver, DBI ist das DB-Interface. ADO
ist eben ein _D_river.
Den Abschnitt "import Module LIST;" verstehe ich noch nicht. Was ist z.B. LIST konkret. "Module" ist, nehme ich an, der Pfad und Modulname, obwohl "bareword" wohl eher nahelegt, dass es sich um ein einzelnes Wort handeln sollte?
"Wort", naja:
"import Module LIST" ist äquivalent mit "Module->import(LIST)".
Vielleicht ist so der Sinn besser ersichtlich. Use ist ein require
- eben diesen "Methodenaufruf", welche z.B. gewisse Symbole in das
aktuelle Package von dem "geused" wird exportiert werden. LIST
beschreibt hierbei genau jene Liste an Symbolen oder -Gruppen, die
Exportiert werden müssen. "use test qw(... ... ...)" das in qw() ist
eben diese LIST.
Der Vorteil von require ist ja gerade, dass man dort einen individuellen (von den Servereinstellungen abweichenden) Pfad zu einer Bibliothek angeben kann.
Hm... Von mir aus... Geht aber auch (meistens) bei use:
use lib qw(../lib);
use Module::Of::My::Lib; # welches sich in ../lib befindet.
An perldoc komme ich leider nicht heran.
http://www.perldoc.com gibts auch online :-)
Wie man mit Perl über OLE ein ADO-Connection-Objekt instanziiert, ist mir leider auch nicht vertraut, kannst Du mir da einen Hinweis geben? Vielleicht auch auf (am besten deutschsprachige, gut übersetzte) Literatur dazu?
Da hab ich grad nix gescheites anzubieten, denn wenn ich es brauche
findet man alles sehr schnell im Internet. Es gibt zahlreiche
Beispiele (meistens für VBScript, aber das Objektmodell bleibt
dasselbe). Über MSDN von M$ findest auch du auch die entsprechenden
InterfaceDescriptions.
Kleines BSP zur Orientierung, das noch irgendwo bei mir rumschwirrte:
-----
use Win32::OLE;
use Win32::ADO qw/CheckDBErrors/;
$ado = Win32::OLE->new("ADODB.Connection") or die "no create!";
if (Win32::OLE->LastError != 0) { die Win32::OLE->LastError; }
$ado->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=c:\db_name.mdb");
if (Win32::OLE->LastError != 0) { die Win32::OLE->LastError; }
my $SQL = "SELECT * FROM test_table";
$rs = $ado->Execute("$SQL");
if (Win32::OLE->LastError != 0) { die Win32::OLE->LastError; }
$rs->MoveFirst;
if (Win32::OLE->LastError != 0) { die Win32::OLE->LastError; }
print $rs->item("Name")."\n";
-----------
So, keine Ahnung, ob dies funktioniert, ich habe es nicht wieder
getestet. Du musst natürlich bei $ado->Open() den MS SQL Connection
String übergeben, mein Beispiel war für eine Access-DB.
Viele Grüsse
Philipp