Home | MySQL |
# create simple $HOME/.my.cnf file
% cat > $HOME/.my.cnf
[client]
host=localhost
user=real_user_name
password=real_password
% chmod 600 $HOME/.my.cnf
connect.pl
1 #!/usr/bin/perl -w
2
3 use DBI;
4 use strict;
5
6 # DBI:driver:database;function_that_read_.my.cnf_file
7 my $dsn = "DBI:mysql:test;mysql_read_default_file=$ENV{HOME}/.my.cnf";
8 my ($user,$pass) = ("","");
9 my ($dbh,$sth,$query);
10
11 $dbh = DBI->connect($dsn,$user,$pass,{ RaiseError => 1 });
12 # or if $HOME/.my.cnf doesn't exist -
13 $dbh = DBI->connect("DBI:mysql:host=localhost;database=test",
14 "user_name",
15 "password",
16 { RaiseError => 1 });
17
18 print "Connection established!\n";
19
20 $dbh->disconnect();
21 exit(0);
1 #!/usr/bin/perl -w 2 3 use DBI; 4 use strict; 5 6 my ($dbh,$sth,$query); 7 8 my_connect(); 9 10 $dbh->do(qq{ DROP TABLE IF EXISTS test }); 11 $query = q{ CREATE TABLE test( 12 id INT(6) ZEROFILL NOT NULL PRIMARY KEY AUTO_INCREMENT, 13 fname VARCHAR(50), 14 lname VARCHAR(50)) }; 15 $dbh->do($query); 16 $query = q{ INSERT INTO test(fname,lname) VALUES("Taras","Shevchenko") }; 17 $dbh->do($query); 18 19 # or using place holder 20 # (better, because no quotation marks, and only one 'prepare' call) 21 my @names = ( 22 [ qw(Fred Lindberg) ], 23 [ qw(Mikael Chertoff) ] ); 24 25 $query = q{ INSERT INTO test(fname,lname) VALUES(?,?) }; 26 $sth = $dbh->prepare($query); 27 28 for ( @names ) { 29 $sth->execute($_->[0],$_->[1]); 30 } 31 32 my_disconnect(); 33 exit(0); 34 #------------------------------------------------------------------------- 35 sub my_connect { 36 my ($dsn) = "DBI:mysql:test;mysql_read_default_file=$ENV{HOME}/.my.cnf"; 37 my ($user,$pass) = ("",""); 38 $dbh = DBI->connect($dsn,$user,$pass,{ RaiseError => 1 }); 39 } 40 sub my_disconnect { 41 $sth->finish(); 42 $dbh->disconnect(); 43 }
1 #!/usr/bin/perl -w 2 3 use DBI; 4 use strict; 5 6 my ($dbh,$sth,$query,$ref); 7 8 my_connect(); 9 10 #------------------------------------------------------------------------- 11 # fetchrow_array 12 $sth = $dbh->prepare(q{ SELECT count(*) FROM test }); 13 $sth->execute(); 14 # scalar value 15 print "There are ", $sth->fetchrow_array(), 16 " records in the 'test' table\n"; 17 # or $rows = $str->rows(); 18 19 # OUTPUT: 20 # There are 3 records in the 'test' table 21 22 $sth = $dbh->prepare(q{ SELECT id,fname,lname FROM test limit 2}); 23 $sth->execute(); 24 # list value 25 while ( my @ary = $sth->fetchrow_array() ) { 26 printf "%-8s%-20s%s\n", @ary; 27 } 28 # OUTPUT: 29 # 000001 Taras Shevchenko 30 # 000002 Fred Lindberg 31 32 #------------------------------------------------------------------------- 33 # fetchrow_arrayref() or alias fetch() 34 $sth = $dbh->prepare(q{ SELECT * FROM test limit 1,2}); 35 $sth->execute(); 36 while ( my $ary_ref = $sth->fetchrow_arrayref() ) { 37 printf "%-20s%s\n", $ary_ref->[1],$ary_ref->[2]; 38 } 39 # or 40 # my ($id,$fname,$lname); 41 # $sth->bind_columns(\$id,\$fname,\$lname); 42 # while ( my $ary_ref = $sth->fetchrow_arrayref() ) { 43 # printf "%-20s%s\n", $fname, $lname; 44 # } 45 46 # OUTPUT: 47 # Fred Lindberg 48 # Mikael Chertoff 49 50 #------------------------------------------------------------------------- 51 # fetchall_arrayref() or alias fetch() 52 $sth = $dbh->prepare(q{ SELECT * FROM test limit 2}); 53 $sth->execute(); 54 # second column, and last column 55 my $ary_ref = $sth->fetchall_arrayref([1,-1]); 56 for my $r ( @{$ary_ref} ) { 57 printf "%-20s%s\n", @{$r}; 58 } 59 # OUTPUT: 60 # Taras Shevchenko 61 # Fred Lindberg 62 #------------------------------------------------------------------------- 63 # fetchrow_hashref() 64 $sth = $dbh->prepare(q{ SELECT fname,lname FROM test limit 1,2}); 65 $sth->execute(); 66 while ( my $hash_ref = $sth->fetchrow_hashref() ) { 67 printf "%-20s%s\n", $hash_ref->{'fname'},$hash_ref->{'lname'}; 68 } 69 # OUTPUT: 70 # Fred Lindberg 71 # Mikael Chertoff 72 73 #------------------------------------------------------------------------- 74 # selectcol_arrayref 75 $ref = $dbh->selectcol_arrayref(q{ SELECT lname FROM test }); 76 print "Last names are: @{$ref}\n" if defined($ref); 77 # OUTPUT: 78 # Last names are: Shevchenko Lindberg Chertoff 79 80 #------------------------------------------------------------------------- 81 # selectall_arrayref() 82 $ref = $dbh->selectall_arrayref(q{ SELECT * FROM test ORDER BY lname }); 83 if ( defined($ref) ) { 84 for ( @{$ref} ) { 85 printf "%-8s%-20s%s\n", $_->[0],$_->[1],$_->[2]; 86 } 87 } 88 # OUTPUT: 89 # 000003 Mikael Chertoff 90 # 000002 Fred Lindberg 91 # 000001 Taras Shevchenko 92 93 #------------------------------------------------------------------------- 94 # selectall_hashref() 95 96 my_disconnect(); 97 exit(0); 98 #------------------------------------------------------------------------- 99 sub my_connect { 100 my ($dsn) = "DBI:mysql:test;mysql_read_default_file=$ENV{HOME}/.my.cnf"; 101 my ($user,$pass) = ("",""); 102 $dbh = DBI->connect($dsn,$user,$pass,{ RaiseError => 1 }) or 103 die($DBI::errstr); 104 } 105 sub my_disconnect { 106 $sth->finish(); 107 $dbh->disconnect(); 108 }