⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 databaseaccess.mht

📁 Perl 编程技巧大全。适合初学者阅读。
💻 MHT
📖 第 1 页 / 共 5 页
字号:
From: <由 Microsoft Internet Explorer 5 保存>
Subject: Database Access
Date: Wed, 29 Apr 2009 09:27:31 +0800
MIME-Version: 1.0
Content-Type: text/html;
	charset="gb2312"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://pleac.sourceforge.net/pleac_perl/dbaccess.html
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML><HEAD><TITLE>Database Access</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dgb2312">
<META content=3D"MSHTML 6.00.2900.5659" name=3DGENERATOR><LINK =
title=3DPLEAC-Perl=20
href=3D"index.html" rel=3DHOME><LINK title=3D"Classes, Objects, and =
Ties"=20
href=3D"classesetc.html" rel=3DPREVIOUS><LINK title=3D"User Interfaces"=20
href=3D"userinterfaces.html" rel=3DNEXT></HEAD>
<BODY class=3DSECT1 text=3D#cecece vLink=3D#d5ae83 aLink=3D#0000ff =
link=3D#f5deb3=20
bgColor=3D#4f6f6f>
<DIV class=3DNAVHEADER>
<TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%"=20
summary=3D"Header navigation table" border=3D0>
  <TBODY>
  <TR>
    <TH align=3Dmiddle colSpan=3D3>PLEAC-Perl</TH></TR>
  <TR>
    <TD vAlign=3Dbottom align=3Dleft width=3D"10%"><A accessKey=3DP=20
      =
href=3D"http://pleac.sourceforge.net/pleac_perl/classesetc.html">Prev</A>=
</TD>
    <TD vAlign=3Dbottom align=3Dmiddle width=3D"80%"></TD>
    <TD vAlign=3Dbottom align=3Dright width=3D"10%"><A accessKey=3DN=20
      =
href=3D"http://pleac.sourceforge.net/pleac_perl/userinterfaces.html">Next=
</A></TD></TR></TBODY></TABLE>
<HR align=3Dleft width=3D"100%">
</DIV>
<DIV class=3DSECT1>
<H1 class=3DSECT1><A name=3DDBACCESS>14. Database Access</A></H1>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN754>Introduction</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
  <TBODY>
  <TR>
    <TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT>AsciiDB   DBI Db     MLDBM    OLE    Pg        Sybase

CDB_File  DBZ_ File  Fame     Msql   ObjStore  Postgres  XBase

DBD       DB_File    Ingperl  MySQL  Oraperl   Sprite
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN757>Making and Using a DBM File</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
  <TBODY>
  <TR>
    <TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>DB_File</FONT><FONT color=3D#00ffff>;</FONT>             =
         <FONT color=3D#bebebe># optional; overrides default
</FONT><FONT color=3D#98fb98>dbmopen</FONT> <FONT =
color=3D#cdcd00>%HASH</FONT>, $FILENAME, <FONT =
color=3D#cdcd00>0666</FONT>    <FONT color=3D#bebebe># open database, =
accessed through </FONT><FONT color=3D#cdcd00>%HASH</FONT><FONT =
color=3D#bebebe>
</FONT>    <FONT color=3D#98fb98>or</FONT> <FONT =
color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"Can't open $FILENAME: =
$!\n"</FONT><FONT color=3D#00ffff>;</FONT>

$V =3D <FONT color=3D#cdcd00>$HASH</FONT><FONT =
color=3D#00ffff>{</FONT>$KEY<FONT color=3D#00ffff>};</FONT>              =
   <FONT color=3D#bebebe># retrieve from database
</FONT><FONT color=3D#cdcd00>$HASH</FONT><FONT =
color=3D#00ffff>{</FONT>$KEY<FONT color=3D#00ffff>}</FONT> =3D =
$VALUE<FONT color=3D#00ffff>;</FONT>             <FONT color=3D#bebebe># =
put value into database
</FONT><FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#ff7f50>exists</FONT> <FONT =
color=3D#cdcd00>$HASH</FONT><FONT color=3D#00ffff>{</FONT>$KEY<FONT =
color=3D#00ffff>})</FONT> <FONT color=3D#00ffff>{</FONT>         <FONT =
color=3D#bebebe># check whether in database
</FONT>    <FONT color=3D#bebebe># ...
</FONT><FONT color=3D#00ffff>}</FONT>
<FONT color=3D#ff7f50>delete</FONT> <FONT =
color=3D#cdcd00>$HASH</FONT><FONT color=3D#00ffff>{</FONT>$KEY<FONT =
color=3D#00ffff>};</FONT>               <FONT color=3D#bebebe># remove =
from database
</FONT><FONT color=3D#98fb98>dbmclose</FONT> <FONT =
color=3D#cdcd00>%HASH</FONT><FONT color=3D#00ffff>;</FONT>               =
    <FONT color=3D#bebebe># close the database
#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>DB_File</FONT><FONT color=3D#00ffff>;</FONT>             =
         <FONT color=3D#bebebe># load database module
</FONT>
<FONT color=3D#ff7f50>tie</FONT> <FONT color=3D#cdcd00>%HASH</FONT>, =
<FONT color=3D#00cd00>"DB_File"</FONT>, $FILENAME   <FONT =
color=3D#bebebe># open database, to be accessed
</FONT>    <FONT color=3D#98fb98>or</FONT> <FONT =
color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"Can't open =
$FILENAME:$!\n"</FONT><FONT color=3D#00ffff>;</FONT>    <FONT =
color=3D#bebebe># through </FONT><FONT color=3D#cdcd00>%HASH</FONT><FONT =
color=3D#bebebe>
</FONT>
$V =3D <FONT color=3D#cdcd00>$HASH</FONT><FONT =
color=3D#00ffff>{</FONT>$KEY<FONT color=3D#00ffff>};</FONT>              =
   <FONT color=3D#bebebe># retrieve from database
</FONT><FONT color=3D#cdcd00>$HASH</FONT><FONT =
color=3D#00ffff>{</FONT>$KEY<FONT color=3D#00ffff>}</FONT> =3D =
$VALUE<FONT color=3D#00ffff>;</FONT>             <FONT color=3D#bebebe># =
put value into database
</FONT><FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#ff7f50>exists</FONT> <FONT =
color=3D#cdcd00>$HASH</FONT><FONT color=3D#00ffff>{</FONT>$KEY<FONT =
color=3D#00ffff>})</FONT> <FONT color=3D#00ffff>{</FONT>         <FONT =
color=3D#bebebe># check whether in database
</FONT>    <FONT color=3D#bebebe># ...
</FONT><FONT color=3D#00ffff>}</FONT>
<FONT color=3D#ff7f50>delete</FONT> <FONT =
color=3D#cdcd00>$HASH</FONT><FONT color=3D#00ffff>{</FONT>$KEY<FONT =
color=3D#00ffff>};</FONT>               <FONT color=3D#bebebe># delete =
from database
</FONT><FONT color=3D#ff7f50>untie</FONT> <FONT =
color=3D#cdcd00>%hash</FONT><FONT color=3D#00ffff>;</FONT>               =
       <FONT color=3D#bebebe># close the database
#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch14/userstats">downloa=
d the following standalone program</A></FONT>
#!/usr/bin/perl -w
# userstats - generates statistics on who is logged in.
# call with an argument to display totals
</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>DB_File</FONT><FONT color=3D#00ffff>;</FONT>

$db =3D <FONT color=3D#00cd00>'/tmp/userstats.db'</FONT><FONT =
color=3D#00ffff>;</FONT>       <FONT color=3D#bebebe># where data is =
kept between runs
</FONT>
<FONT color=3D#ff7f50>tie</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>%db</FONT>, <FONT color=3D#00cd00>'DB_File'</FONT>, =
$db<FONT color=3D#00ffff>)</FONT>         <FONT =
color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"Can't open DB_File $db : $!\n"</FONT><FONT =
color=3D#00ffff>;</FONT>

<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"</FONT><FONT color=3D#cdad00>@ARGV</FONT><FONT =
color=3D#00cd00>"</FONT> <FONT color=3D#98fb98>eq</FONT> <FONT =
color=3D#00cd00>"ALL"</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
        <FONT color=3D#cdad00>@ARGV</FONT> =3D <FONT =
color=3D#ff7f50>sort</FONT> <FONT color=3D#ff7f50>keys</FONT> <FONT =
color=3D#cdcd00>%db</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#00ffff>}</FONT>
    <FONT color=3D#ffa500>foreach</FONT> <FONT =
color=3D#9ac0cd>$user</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
            <FONT color=3D#ff7f50>print</FONT> <FONT =
color=3D#00cd00>"$user\t</FONT><FONT color=3D#cdcd00>$db</FONT><FONT =
color=3D#00cd00>{$user}\n"</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#cdad00>@who</FONT> =3D <FONT =
color=3D#00cd00>`who`</FONT><FONT color=3D#00ffff>;</FONT>               =
                    <FONT color=3D#bebebe># run who(1)
</FONT>    <FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT>$?<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
        <FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"Couldn't =
run who: $?\n"</FONT><FONT color=3D#00ffff>;</FONT>               <FONT =
color=3D#bebebe># exited abnormally
</FONT>    <FONT color=3D#00ffff>}</FONT>
    <FONT color=3D#bebebe># extract username (first thing on the line) =
and update
</FONT>    <FONT color=3D#ffa500>foreach</FONT> <FONT =
color=3D#9ac0cd>$line</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdad00>@who</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
        $line =3D~ /^<FONT color=3D#00ffff>(</FONT>\S+<FONT =
color=3D#00ffff>)</FONT>/<FONT color=3D#00ffff>;</FONT>
        <FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"Bad line =
from who: $line\n"</FONT> <FONT color=3D#ffa500>unless</FONT> $<FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>;</FONT>
        <FONT color=3D#cdcd00>$db</FONT><FONT =
color=3D#00ffff>{</FONT>$<FONT color=3D#cdcd00>1</FONT><FONT =
color=3D#00ffff>}</FONT>++<FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#ff7f50>untie</FONT> <FONT color=3D#cdcd00>%db</FONT><FONT =
color=3D#00ffff>;</FONT>

<FONT color=3D#bebebe>#-----------------------------
</FONT>gnat     ttyp1   May <FONT color=3D#cdcd00>29</FONT> <FONT =
color=3D#cdcd00>15</FONT>:<FONT color=3D#cdcd00>39</FONT>   <FONT =
color=3D#00ffff>(</FONT>coprolith.frii.com<FONT color=3D#00ffff>)</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN760>Emptying a DBM File</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
  <TBODY>
  <TR>
    <TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#98fb98>dbmopen</FONT><FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>%HASH</FONT>, $FILENAME, =
<FONT color=3D#cdcd00>0666</FONT><FONT color=3D#00ffff>)</FONT>         =
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"Can't open FILENAME: $!\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#cdcd00>%HASH</FONT> =3D <FONT color=3D#00ffff>();</FONT>
<FONT color=3D#98fb98>dbmclose</FONT> <FONT =
color=3D#cdcd00>%HASH</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>DB_File</FONT><FONT color=3D#00ffff>;</FONT>

<FONT color=3D#ff7f50>tie</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>%HASH</FONT>, <FONT color=3D#00cd00>"DB_File"</FONT>, =
$FILENAME<FONT color=3D#00ffff>)</FONT>        <FONT =
color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"Can't open FILENAME: $!\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#cdcd00>%HASH</FONT> =3D <FONT color=3D#00ffff>();</FONT>
<FONT color=3D#ff7f50>untie</FONT> <FONT =
color=3D#cdcd00>%hash</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#98fb98>unlink</FONT> $FILENAME
    <FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"Couldn't unlink $FILENAME to empty the database: =
$!\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>dbmopen</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>%HASH</FONT>, $FILENAME, <FONT =
color=3D#cdcd00>0666</FONT><FONT color=3D#00ffff>)</FONT>
    <FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"Couldn't create $FILENAME database: =
$!\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN763>Converting Between DBM Files</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
  <TBODY>
  <TR>
    <TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch14/db2gdbm">download =
the following standalone program</A></FONT>
#!/usr/bin/perl -w
# db2gdbm: converts DB to GDBM
</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>strict</FONT><FONT color=3D#00ffff>;</FONT>

<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>DB_File</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>GDBM_File</FONT><FONT color=3D#00ffff>;</FONT>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -