use LabVIEW_Comm; use DBI; #------- Parameterübergabe -----------------# foreach $eintrag (@ARGV) { push(@eintraege,$eintrag); } $dbname = $eintraege[0]; $hostname = $eintraege[1]; $user = $eintraege[2]; $password = $eintraege[3]; $driver = $eintraege[4]; $mdb_file = $hostname."\\".$dbname; #--- ACCESS Verbindung -----------# my $connection_string = q{;Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:System database=}; my $dbh = DBI->connect("dbi:ADO:Data Source=".$mdb_file.$connection_string, ""); #---- Datenbankverbindung ---# #my $dbname='ess'; #my $hostname='localhost'; #my $driver='mysql'; #my $user=''; #my $password=''; #my $dsn="DBI:$driver:dbname=$dbname;host=$hostname"; #my $dbh = DBI->connect($dsn, $user, $password,{RaiseError=>0}); my $sth_select; $PORT = 9000; $_=''; until (/exit/) { $labview = LabVIEW_Comm::Open_LV_Connection; $str = LabVIEW_Comm::Read_LV(); $_ = $str; if ($str eq "stop\n") # Ist der String auf dem Netz "stop" so wird die Verbindung geschlossen und das Script beendet { LabVIEW_Comm::Close_LV_Connection; exit; } #----------- SQL-String auf shell ausgeben ------------------# print $str."\n"; #--------------------------------------------------------------# @sql=split(/ +/,$str); $befehl=@sql[0]; $befehl=lc($befehl); # $befehl immer in Kleinbuchstaben wandeln if($befehl eq "select") { $antwort=&select("$str"); $sql_antwort=""; $str=""; } if(($befehl eq "delete") or ($befehl eq "insert") or ($befehl eq "update") or ($befehl eq "load")) { $antwort=&sqloa("$str","$befehl"); $str=""; #print $str.$befehl; } LabVIEW_Comm::Write_LV(" ".$antwort); } # sub für select Statement sub select() { $sth_select=$dbh->prepare("$_[0]") or ($sql_fail=1); $sth_select->execute or ($sql_fail=1); #--- Anzahl der betroffenen Zeilen auslesen und in $cnt speichern ----# $zaehler = $dbh->prepare("SELECT count(*) FROM (($_[0]) As tblTemp)"); $zaehler->execute; while (my $zahl = $zaehler->fetchrow) { $cnt=$zahl; } #----------------------------------------------------------------------# if ($cnt eq "0E0") { return "nix da"; } if ($sql_fail == 1) { return "SQL- Fehler"; $sql_fail=0; } else { while (my @ausgabe = $sth_select->fetchrow_array) { for ($x=0;$x<=@ausgabe;$x++) { $test=$test.$ausgabe[$x]."|"; } $sql_antwort=$sql_antwort.$test."\n"; $test=""; # inhalt von $test wieder löschen!! } $sql_antwort="$cnt*".$sql_antwort."END"; $cnt=0; return "$sql_antwort"; } $sth_select->finish; $dbh->disconnect; } # Ende sub "select" # sub für delete Statement sub sqloa() { $sth_oa=$dbh->prepare("$_[0]") or ($sql_fail=1); $sth_oa->execute or ($sql_fail=1); $sth_oa->finish; if ($sql_fail == 1) { return " SQL- Fehler"; $sql_fail=0; } else { return " $_[1] erfolgreich"; } } # Ende sub "sqloa" $dbh->disconnect; $dummy=;