[perl] 鏈接mysql

先寫在這裏吧,以後再改進~~http://fanqiang.chinaunix.net/program/perl/2006-05-31/4379.shtml html

package mysql_conn;
use DBI;
use strict;
sub new{
 my $class = shift();
 print ("CLASS=$class\n");
 my $self={};
 $self->{"location"} = shift();
 $self->{"db_name"} = shift();
 $self->{"db_user"} = shift();
 $self->{"db_pass"} = shift();
 bless $self,$class;
 return $self;
}
sub get_table_flag_1_3{
 my ($self,$TABLE)=@_;
 my $port = "3306"; #這是mysql的缺省
 my $location=$self->{"location"};
 my $db_name=$self->{"db_name"};
 my $db_user = $self->{"db_user"};
 my $db_pass = $self->{"db_pass"};
 my $database = "DBI:mysql:$dbname:$location:$port";
 my $dbh = DBI->connect($database,$db_user,$db_pass) or die "Cann't connect the Database".DBI->errstr;
 my $sql = "SELECT file,owner FROM TABLE where flag=1 or flag=3";
 my $sth = $dbh->prepare($sql);
 $sth->execute() or die "db operation Error:$dbh->errstr"; #執行
my $result=$sth->fetchall_arrayall();
 $sth->finish();
 $dbh->disconnect;#斷開數據庫鏈接
 return $result;
}


  1. ##------------------------------------------------------------------------------------------------
  2. ##利用perl DBI建立數據庫stucourse,並建立student,course,grade表
  3. ##------------------------------------------------------------------------------------------------
  4. use DBI;
  5. my $db_name = "stucourse"; #數據庫名,若是與現有數據庫衝突,可改成其餘名字
  6. my $db_host = "localhost"; #主機名
  7. my $db_port = '3306'; #端口號
  8. my $username = "root"; #用戶名
  9. my $password = "123"; #密碼
  10. my $dsn = "dbi:mysql:database=${db_name};hostname=${db_host};port=${db_port}";#數據源

  11. #獲取驅動程序對象句柄
  12. my $drh=DBI->install_driver("mysql"); 
  13. #若是存在數據庫$db_name,則刪除之
  14. if($rc = $drh->func("dropdb",$db_name ,$db_host,$username,$password,"admin") ){ 
  15.     print "drop database `",$db_name,"` successfully!\n";
  16. }
  17. #建立數據庫$db_name
  18. $rc = $drh->func("createdb",$db_name ,$db_host,$username,$password,"admin")or
  19.     die "failed to create database ",$db_name,"!\n";
  20. print "create database `stucourse` successfully!\n";

  21. #獲取數據庫句柄
  22. my $dbh = DBI -> connect ($dsn, $username, $password,{RaiseError => 1, PrintError => 0})or
  23.     die "failed to connect to the database!\n",DBI->errstr();

  24. #設置數據庫字符集,防止中文亂碼
  25. my $charset = "set character_set_database=utf8";
  26. my $sth = $dbh->prepare($charset);
  27. $sth->execute();

  28. #建立表course
  29. my $query = "CREATE TABLE `course` ( "
  30.             ."`cid` int(10) NOT NULL auto_increment,"
  31.             ."`cno` varchar(20) NOT NULL, "
  32.             ."`cname` varchar(20) default NULL, "
  33.             ."PRIMARY KEY (`cid`)" 
  34.             .")ENGINE=InnoDB DEFAULT CHARSET=utf8;";
  35. my $sth = $dbh->prepare($query);
  36. $sth->execute() or die "create table course error: ".$sth->errstr();
  37. print "create table `course` successfully!\n";

  38. #建立表student
  39. my $query = "CREATE TABLE `student` ("
  40.             ."`sid` int(10) NOT NULL auto_increment,"
  41.             ."`sno` varchar(20) NOT NULL,"
  42.             ."`sname` varchar(20) default NULL,"
  43.             ."PRIMARY KEY (`sid`)"
  44.             .")ENGINE=InnoDB DEFAULT CHARSET=utf8;";
  45. my $sth = $dbh->prepare($query);
  46. $sth->execute() or die "create table student error: ".$sth->errstr();
  47. print "create table `student` successfully!\n";

  48. #建立表grade
  49. my $query = "CREATE TABLE `grade` ("
  50.          ."`gid` int(10) NOT NULL,"
  51.          ."`cid` int(10) NOT NULL,"
  52.          ."`sid` int(10) NOT NULL,"
  53.          ."`grade` int(10) default NULL,"
  54.          ."PRIMARY KEY (`gid`),"
  55.          ."KEY `cid` (`cid`),"
  56.          ."KEY `sid` (`sid`),"
  57.          ."CONSTRAINT `cid` FOREIGN KEY (`cid`) REFERENCES `course`(`cid`),"
  58.          ."CONSTRAINT `sid` FOREIGN KEY (`sid`) REFERENCES `student`(`sid`)"
  59.          .") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
  60. my $sth = $dbh->prepare($query);
  61. $sth->execute() or die "create table grade error: ".$sth->errstr();
  62. print "create table `grade` successfully!\n";

  63. #關閉數據庫鏈接
  64. $dbh->disconnect();
http://blog.chinaunix.net/uid-23781137-id-3184595.html


fetchrow_array ()抽取方法的返回是一個包含查詢結果的數組。還有其它方法: mysql

fetchrow_arrayref ()返回一個數組引用。 sql

fetchrow_hashref ()返回散列引用。 數據庫

use  strict ;
use  DBI ;
my   $ dbh   =  DBI - > connect ( "DBI:mysql:database=lybtest;host=localhost" , "root" , "123456" ) ;
my   $ rows   =   $ dbh - > do ( "insert into tbname(id,name,age) values('1','test',,'27')" ) ;
相關文章
相關標籤/搜索