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__ |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |