Über Perlscript Microsoft SQL 2000 Datenbank abfragen!
Jan
- cgi
Hallo,
ich möchte ein bestehendes Perlscript, welches den Inhalt einer Accessdatenbank abfragt, so ändern, dass es nicht mehr eine Access sondern eine MS SQL 2000 Datenbank abfragt.
Hier das Script:#!D:\Perl\bin
use DBI;
use CGI;
my $dsn = "DBI:ODBC:test";
my $dbh = DBI->connect($dsn);
my $SQL = "SELECT * FROM adressen";
my $Abfrage = $dbh->prepare($SQL);
$Abfrage->execute();
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<BODY BGCOLOR=#FFFFFF>\n";
print "<CENTER>\n";
print "<b>Inhalt der DB :</b><BR><br>\n";
while($Row=$Abfrage->fetchrow_hashref)
{
# print "$Row->{name} \n $Row->{email}\n";
print "$Row->{name} $Row->{email} <br>";
}
print "\n";
print "</CENTER>\n";
print "</BODY></HTML>";
Ich kann es nicht 1 zu 1 übernehmen, dashabe ich gemerkt!
ODBC Verbindung ist richtig eingestellt... daran kann es also nicht liegen. irgendetwas an der syntaxmuss anders sein
Danke schon mal
MFG
Jan
Hi Jan,
my $dsn = "DBI:ODBC:test";
my $dbh = DBI->connect($dsn);
my $SQL = "SELECT * FROM adressen";
my $Abfrage = $dbh->prepare($SQL);
$Abfrage->execute();
solche Funktionen liefern üblicherweise (auch) Informationen zurück, die Dir sagen, was davon geklappt hat, und wenn ja, warum nicht - oder so ähnlich.
Ein defensiverer Programmierstil wäre Dir dringend anzuraten.
Viele Grüße
Michael
Habe jetzt immer noch nicht kapiert was ich falsch mache bzw. was die Lösung ist??
MFG Jan
Hi Jan,
Habe jetzt immer noch nicht kapiert was ich falsch mache
Du hinderst Dein Programm daran, vernünftige Fehlermeldungen auszugeben.
bzw. was die Lösung ist??
Dies ist das Ergebnis des Vorherigen ...
Viele Grüße
Michael
Tolle Hilfe!
Wenn du wenigstens mal nen Vorschlag machen würdest wie es geht........ defensiver programmieren??...kann damit nix anfangen......irgendwas an der syntax muss flasch sein, vielleicht weiss kennt sich ja jemand damit aus!
mfg jan
Hi,
Tolle Hilfe!
Stimmt. Wenn du Michaels Vorschläge umsetzen würdest, wäre dir das bewusst.
Wenn du wenigstens mal nen Vorschlag machen würdest wie es geht
Hat Michael doch, s.o.
defensiver programmieren?
Das heißt, dass du erstmal alle deine Verbindungsversuche zur Datenbank mit einer Fehlerbehandlung versehen sollst, damit du weißt, was genau warum nicht funktioniert. So wie es im Moment aussieht, verlässt du dich völlig darauf, dass dein Script fehlerfrei funktioniert.
irgendwas an der syntax muss flasch sein, vielleicht weiss kennt sich ja jemand damit aus!
So lange du nicht sagst, was nicht funktioniert (-> Fehlerabfrage), wird dir niemand wirklich helfen können. Bis dahin empfiehlt sich auf jeden Fall ein Blick in die Dokumentation http://dbi.perl.org.
Viele Grüße
Torsten
Sooo....
das ist die Fehlermeldung die dazu angezeigt wird!!
Hier mal mein abgändertes Skript:#!D:\Perl\bin
use DBI;
use CGI;
my $dsn = "DBI:ODBC:sql-test";
my $dbh = DBI->connect($dsn);
my $SQL = "SELECT * FROM sql-test;";
my $Abfrage = $dbh->prepare($SQL);
$Abfrage->execute();
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<BODY BGCOLOR=#FFFFFF>\n";
print "<CENTER>\n";
print "<b>Inhalt der DB :</b><BR><br>\n";
while($Row=$Abfrage->fetchrow_hashref)
{
# print "$Row->{name} \n $Row->{email}\n";
print "$Row->{name} $Row->{email} <br>";
}
print "\n";
print "</CENTER>\n";
print "</BODY></HTML>";
und das ist die fehlermeldung die kommt!!!
DBD::ODBC::st execute failed: [Microsoft][ODBC SQL Server Driver][SQL Server]Lin
e 1: Incorrect syntax near '-'. (SQL-42000)
[Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepare
d. (SQL-42000)(DBD: st_execute/SQLExecute err=-1) at D:\Apacheroot\Jan-Test\sql-
select.pl line 15.
Content-type: text/html
<HTML>
<BODY BGCOLOR=#FFFFFF>
<CENTER>
<b>Inhalt der DB :</b><BR><br>
DBD::ODBC::st fetchrow_hashref failed: (DBD: no select statement currently execu
ting err=-1) at D:\Apacheroot\Jan-Test\sql-select.pl line 24.
Hi Jan,
my $SQL = "SELECT * FROM sql-test;";
DBD::ODBC::st execute failed: [Microsoft][ODBC SQL Server Driver][SQL Server]Lin
e 1: Incorrect syntax near '-'. (SQL-42000)
eben - das hilft doch schon mal weiter. Der Server scheint nicht in der Lage zu sein, die beiden Tabellen "sql" und "test" voneinander zu subtrahieren ...
Viele Grüße
Michael
Hi
Das ist der Name der TAbelle!! sql-test
Der soll auch nichts subtrahieren!
mfg
Jan
Hi Jan,
Das ist der Name der TAbelle!! sql-test
Der soll auch nichts subtrahieren!
das glaubst Du vielleicht. Die Datenbank ist anderer Meinung ... woraus ich schließe, daß in _ihrem_ Universum das Zeichen "-" kein Bestandteil eines legalen Tabellennamens sein darf. (RTFM)
Viele Grüße
Michael
Hi,
Das ist der Name der TAbelle!! sql-test
Der soll auch nichts subtrahieren!
Das "-" ist in DB-Namen nicht erlaubt.
Viele Grüße
Torsten