Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - Programmierung » Perl/DBI-Unterstützung » Perl-Skripten für DBD::SQLAnywhere schreiben

 

Zeilen einfügen

Zum Einfügen von Zeilen wird ein Handle für eine offene Verbindung benötigt. Die einfachste Methode besteht darin, eine parametrisierte INSERT-Anweisung zu verwenden, in der Fragezeichen als Platzhalter für Werte eingesetzt werden. Die Anweisung wird erst vorbereitet und dann pro neuer Zeile ausgeführt. Die neuen Zeilenwerte werden als Parameter an die execute-Methode übergeben.

Das folgende Beispielprogramm fügt zwei neue Kunden ein. Obwohl die Zeilenwerte als Literalzeichenfolgen erscheinen, können Sie die Werte aus einer Datei einlesen.



#!/usr/local/bin/perl -w
#
use DBI;
use strict;
my $database = "demo";
my $data_src = "DBI:SQLAnywhere:SERVER=$database;DBN=$database";
my $uid      = "DBA";
my $pwd      = "sql";
my $ins_stmt = "INSERT INTO Customers (ID, GivenName, Surname,
                        Street, City, State, Country, PostalCode,
                        Phone, CompanyName)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 
my %defaults = (
     AutoCommit => 0, # Require explicit commit or rollback.
     PrintError => 0
   );
my $dbh = DBI->connect($data_src, $uid, $pwd, \%defaults)
     or die "Can't connect to $data_src: $DBI::errstr\n";
&db_insert($ins_stmt, $dbh);
$dbh->commit;
$dbh->disconnect;
exit(0);

sub db_insert {
      my($ins, $dbh) = @_;
      my($sth) = undef;
      my @rows = (
        "801,Alex,Alt,5 Blue Ave,New York,NY,USA,10012,5185553434,BXM",
        "802,Zach,Zed,82 Fair St,New York,NY,USA,10033,5185552234,Zap"
       );
      $sth = $dbh->prepare($ins);
      my $row = undef;
      foreach $row ( @rows ) {
        my @values = split(/,/, $row);
        $sth->execute(@values);
      }
}
__END__