如何用Perl向MySQL中插入数据

来源:互联网 发布:天宝软件 编辑:程序博客网 时间:2024/05/22 05:00

简单插入

<pre name="code" class="plain">#!\usr\bin\perluse warnings;use strict;use DBI;my ($dbh, $rows);<p style="margin-top: 0px; margin-bottom: 12px; padding-top: 0px; padding-bottom: 0px;">my $dbh = DBI->connect("DBI:Mysql:database=somedb;host=localhost", "user", "pass", {'RaiseError' => 1})<span style="font-family: Arial, Helvetica, sans-serif;"> || </span><span style="font-family: Arial, Helvetica, sans-serif;">die "Error opening database: $DBI::errstr\n";</span></p>$rows=$dbh->do("INSERT INTO checkin VALUES ('John', 'Smith', 'Glasgow')")|| die "Couldn't insert record : $DBI::errstr";print "$rows row(s) added to checkin\n";$dbh->disconnect || die "Failed to disconnect\n";




插入变量(批量插入)

每次运行时,查询的格式保持不变,只有输入的值发生变化。要完成这一操作,最佳方法是为INSERT查询建立一个内置DBI“占位符”的模板,然后在每次运行时用实际值来代替占位符。

#!/usr/bin/perl


use DBI;


# create database connection


my $dbh = DBI->connect("DBI:Mysql:database=somedb;host=localhost", "user", "pass", {'RaiseError' => 1});


# prepare template query


my $sth = $dbh->prepare("INSERT INTO users (fname, lname) VALUES (?, ?)");


# execute query with first set of parameters


$sth->execute('John', 'Doe');


# execute query with second set of parameters


$sth->execute('Jane', 'Low');


# close connection


$dbh->disconnect();


建立并执行一个带Perl DBI预编译SQL查询共分四个简单的步骤:


首先调用connect()方法初始化一个数据库句柄。这个方法以一个字符串为连接参数,这个字符串中包括数据库类型(”Mysql”)、主机名称(”localhost”)和数据库名称(”somedb”);并向connect()方法提供用户名(”user”)和密码(”pass”)作为第二和第三自变量。

调用prepare()函数建立SQL查询模板。prepare()中用到的问号为代替实际值的占位符。

调用execute()方法向查询预编译模板中输入实际数据值,把它提交给占位符代替的自变量。注意,这里自变量的顺序十分重要,在上一步中必须为每个占位符定义一个自变量。每次通过一组不同的自变量调用execute()方法,就用相应的值执行一次INSERT查询。

调用disconnect()方法结束会话。

从一个外部文件中批量插入数据,是上述查询的典型应用。这时,首先调用prepare()方法,然后应用一个循环从文件中读入数据,每运行一次循环,即调用execute()方法在数据库中插入一组值。



0 0
原创粉丝点击