广

MYSQL

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    Mysql入门系列:Perl DBI基础(1)

    2018-04-25 21:46:06 次阅读 稿源:互联网
    零七网广告
    全网推广平台,软文发布

      本节提供DBI 的背景信息—在编写自己的脚本和支持其他人编写的脚本时,需要这些信息。如果已经熟悉DBI,则可以略过这节,直接跳到7 . 3节“运行DBI”。

      DBI 数据类型

      从某些方面来说,使用Perl DBI API 类似于使用第6章介绍的C 客户机库。在使用C 客户机库时,主要依靠指向结构或数组的指针来调用函数和访问与MySQL相关的数据。在使用DBI API 时,除了函数称为方法,指针称为引用外,也调用函数和使用指向结构的指针。

      指针变量称为句柄,句柄指向的结构称为对象。

      DBI 使用若干种句柄。它们往往通过表7-1所示的惯用名称在DBI 文件中引用。而惯用的非句柄变量的名称如表7 - 2所示。实际上,在本章中,我们并不使用每个变量名,但是,在阅读其他人编写的DBI 脚本时,了解它们是有用的。

      表7-1惯用的Perl DBI 句柄变量名

    名称说明
    $dbh数据库对象的句柄
    $sth语句(查询)对象的句柄
    $fh打开文件的句柄
    $h“通用”句柄;其意义取决于上下文

      表7-2 惯用的Perl DBI 非句柄变量的名称

    名称说明
    $rc从返回真或假的操作中返回的代码
    $rv从返回整数的操作中返回的值
    $rows从返回行数的操作中返回的值
    @ary查询返回的表示一行值的数组(列表)

      一个简单的DBI 脚本

      让我们从一个简单脚本d um p _ member s开始,它举例说明了DBI 程序设计中若干标准概念,如与MySQL服务器的连接和断开、检索数据等。此脚本产生的结果为以制表符分隔形式列出的历史同盟成员。这个格式本身并不让人感兴趣:在这里,了解如何使用DBI 比产生漂亮的输出更为重要。

      dump_members 如下:

      

      

      要想自己试验这个脚本,可以下载它(请参阅符录A),或使用文本编辑器创建它,然后使之可执行,以便能运行。当然,可能至少需要更改一些连接参数(主机名、数据库名、用户名和口令)。本章中的其他DBI 脚本也是这样。在参数缺省时,本章下载脚本的权限设置为只允许读。如果您将自己的MySQL用户名和口令放在它们之中,我建议将它们保留为这种方式,以便其他人不能读取这些值。以后,在7 . 2 . 8节“指定连接参数”中,我们将看到如何从选项文件中获得这些参数,而不是将它们直接放在脚本中。

      现在,让我们逐行看完这个脚本。第一行是标准行,指出哪里可以找到Perl 的指示器:

      #! /usr/bin/perl

      在本章将要讨论的脚本中,每个脚本都包含这行;以后不再说明。此脚本中至少应该含有一个简短的目的说明,这是一个好主意,所以下一行是一个注释,给阅读此脚本的人提供一个关于它做什么的线索:

      # dump_members.dump Historical League's membership list

      从‘#’字符到行尾部的文本为注释。有必要做一些练习,就是在整个脚本中编写一些注释来解释它们如何工作。

      接下来是两个use 行:

      use DBI;

      use strict;

      use DBI 告知Perl 解释程序它需要引入DBI 模块。如果没有这一行,试图在脚本中做与DBI 相关的任何事,都将出现错误。不需要指出想要哪个DBD 级别的模块。在连接数据库时,DBI 会激活相应的模块。

      use strict 告知Perl,在使用它们之前需要声明变量。如果没有use strict 行,也可以编写脚本,但是,它有助于发现错误,所以建议始终要包括这行。例如,置为严格模式时,如果声明变量$ my _ v a r,但是之后错误地用$mv_var 来访问,则在运行这个脚本时,将获得下面的消息:

      Global symbol "$mv_var" requires explicit package name at line n

      这个消息会使您想,“怎么了?$ m v _ v a r?我从未使用过这种名称的变量!”,然后,找到脚本中的第n行,看是什么问题,并改正它。如果不用严格模式, Perl 不会给出$ m v _ v a r;将只是简单地按具有un d e f(未定义的)值的该名称创建一个新的变量,并毫无动静地使用它,然后,您会莫名其妙脚本为什么不工作。

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七网广告
    零七网广告
    零七网广告
    零七网广告