perl链接数据库实例

简介:

目标:方便自己快速查询数据库表记录;

示例:

数据库主机:127.0.0.1

数据库名称:tmp

数据库表名:tmp

表结构:

1
2
3
4
5
6
7
8
9
10
mysql>  desc  tmp.tmp;
+ ------------+--------------+------+-----+---------+----------------+
| Field      | Type         |  Null  Key  Default  | Extra          |
+ ------------+--------------+------+-----+---------+----------------+
| id         |  int (11)      |  NO    | PRI |  NULL     | auto_increment |
| PhoneNum   |  char (11)     |  NO    | MUL |  NULL     |                |
| status     |  int (11)      |  NO    |     |  NULL     |                |
| statusDesc |  varchar (255) | YES  |     |  NULL     |                |
+ ------------+--------------+------+-----+---------+----------------+
rows  in  set  (0.04 sec)

表数据:

1
2
3
4
5
6
7
8
9
10
mysql>  select  from  tmp.tmp;
+ ----+-------------+--------+------------+
| id | PhoneNum    | status | statusDesc |
+ ----+-------------+--------+------------+
|  1 | 18600000000 |     10 | 北京       |
|  2 | 18600000001 |     21 | 上海       |
|  3 | 18600000002 |     10 |            |
|  4 | 18600000000 |     10 |  NULL        |
+ ----+-------------+--------+------------+
rows  in  set  (0.00 sec)

查询代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!D:\Perl64\bin
 
use  DBI;
use  strict;
#use warnings;
 
if  ( @ARGV  != 1) {
     print  "Please input a Phone Num ~ \nEg:perl sql.pl 18600000000 ~ \n" ;
} else  {
my  $tmp  = {
     user =>  'tmp' ,            
     pass =>  'tmp' ,            
     host =>  '127.0.0.1' ,
     database =>  'tmp' ,
     port => 3306,
};
 
my  $Phone_num  shift ;
chomp  $Phone_num ;
 
##链接数据库
my  $tmp_dbh =DBI-> connect ( "DBI:mysql:$tmp->{database};host=$tmp->{host};port=$tmp->{port}" , $tmp ->{user}, $tmp ->{pass},{ RaiseError =>1});
##设置数据库编码
$tmp_dbh -> do  ( "set character_set_client = 'gb2312'" );
$tmp_dbh -> do  ( "set character_set_connection = 'gb2312'" );
$tmp_dbh -> do  ( "set character_set_results = 'gb2312'" );
###查询语句
my  $tmp_sql = qq{select * from tmp where phoneNum = $Phone_num ;} ;
my  $tmp_sth = $tmp_dbh ->prepare( $tmp_sql ) or  die  'Unable to perpare our query:' . $tmp_dbh ->errstr. "\n" ;
###执行语句
my  $results = $tmp_sth ->execute() or  die  'Unable to execute our query:' . $tmp_dbh ->errstr. "\n" ;
###如果没有结构,打印N/A
print  "N/A"  if  $results  == 0;
###将结果以hash方式引用给$reslut_ref
while  ( my  $reslut_ref  $tmp_sth ->fetchrow_hashref){
 
     print  "---------------New Line--------------\n" ;
     print  "id        :    $reslut_ref->{id}\n" ;
     print  "PhoneNum    :    $reslut_ref->{PhoneNum}\n" ;
     print  "status        :    $reslut_ref->{status}\n" ;
     print  "statusDesc    :    $reslut_ref->{statusDesc}\n" ;
}
#####介于statusDesc字段可能为NULL,打印时会提示该变量未初始化,这也是上面关闭warnings的原因,当然也可以局部关闭;
$tmp_sth ->finish();
$tmp_dbh ->disconnect();
}

执行结果;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
E:\Workspaces\MyEclipse10\PerlProject>perl sql.pl
Please input a Phone Num ~
Eg:perl sql.pl 18600000000 ~
 
E:\Workspaces\MyEclipse10\PerlProject>perl sql.pl 18600000000
---------------New Line--------------
id               :       1
PhoneNum        :       18600000000
status          :       10
statusDesc      :       北京
---------------New Line--------------
id               :       4
PhoneNum        :       18600000000
status          :       10
statusDesc      :
 
E:\Workspaces\MyEclipse10\PerlProject>



本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1600971

相关文章
|
1月前
|
SQL 安全 关系型数据库
sql数据库本地链接
在SQL数据库中,本地连接通常指的是在同一台计算机上运行的数据库客户端连接到该计算机上的数据库服务器。这种连接通常使用`localhost`或`127.0.0.1`(这是IPv4地址,代表本地回环地址
|
1月前
|
SQL 存储 安全
sql server 数据库实例
SQL Server 数据库实例是指在 SQL Server 中创建的一个独立的数据库环境。每个数据库实例都拥有自己的一套完整的数据库文件、配置设置、用户和权限等,可以独立地进行管理和操作。以下是关于
|
1天前
|
存储 关系型数据库 分布式数据库
PolarDB产品使用问题之如何将数据库从一个PolarDB实例导入到另一个PolarDB实例
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
9天前
|
分布式计算 大数据 关系型数据库
MaxCompute产品使用合集之如何实现类似mysql实例中的数据库功能
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
9天前
|
缓存 分布式计算 DataWorks
DataWorks操作报错合集之连接数据库时出现了通信链接失败的报错,该如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
28天前
|
运维 安全 数据管理
数据管理DMS产品使用合集之是否可以为同一个实例下的不同数据库设置不同的审批规则
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
35 5
|
28天前
|
SQL 弹性计算 数据管理
数据管理DMS产品使用合集之sql server实例,已经创建了数据库,登录时提示实例已存在,该怎么处理
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
36 1
|
1月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之如何将实例关联到本地的数据库
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
9天前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之无法连接到指定的数据库实例,该如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
1月前
|
弹性计算 安全 数据库
云上攻防-云服务篇&弹性计算&云数据库&实例元数据&控制角色&AK控制台接管
云上攻防-云服务篇&弹性计算&云数据库&实例元数据&控制角色&AK控制台接管