中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
使用 Apache Derby 開發(fā) Perl 應(yīng)用程序

概述

要使用 Perl 訪問數(shù)據(jù)庫,就需要用到 Perl 數(shù)據(jù)庫接口( DBI),這是用于 Perl 的一個開源組件。DBI 支持 Perl 與第三方數(shù)據(jù)庫的集成,例如 IBM® Cloudscape™ 或 Derby。DBI 定義了訪問數(shù)據(jù)庫的方法、變量以及約定。為了訪問特定的數(shù)據(jù)庫,除了需要 DBI 之外,還需要一個 Perl Database Driver (DBD)。有多種可用于各種數(shù)據(jù)庫的 DBD,要訪問某一個數(shù)據(jù)庫,需要同時使用 DBI 和特定于數(shù)據(jù)庫的 DBD。使用 Perl 訪問數(shù)據(jù)庫的另一種方法是使用 DBI 和 DBD-ODBC 模塊,后者使用 ODBC,而不是使用本地的 DBD。目前還沒有專用于 Derby 的 DBD,因此,訪問 Derby 數(shù)據(jù)庫時需要使用 DBD-ODBC 模塊。Derby 通過 IBM DB2™ Run-time Client 獲得 ODBC 支持。

IBM CloudscapeApache Derby 開源數(shù)據(jù)庫的商業(yè)發(fā)行版。

Perl 是一種通用的、功能強大的腳本語言,常用于 Web 開發(fā)。利用 Perl 中提供的對數(shù)據(jù)庫的支持,可以很容易地從 Perl 訪問 Derby 數(shù)據(jù)庫。通過使用 ODBC 以及 Perl DBI 和 DBD-ODBC 模塊,就可以從 Perl 訪問 Derby 數(shù)據(jù)庫。

在本文中,您將親歷安裝和配置用 Perl 訪問 Derby 數(shù)據(jù)庫所需的各種組件的每一個步驟。首先要安裝和配置 IBM DB2 ODBC 驅(qū)動程序,以連接和創(chuàng)建 Derby 數(shù)據(jù)庫的數(shù)據(jù)源。接著,將學(xué)習(xí)如何在 Windows 上安裝 Perl、Perl DBI 以及 Perl DBD-ODBC 組件。至此,所有預(yù)備工作便告完成,然后就可以創(chuàng)建訪問 Derby 數(shù)據(jù)庫的 Perl 腳本。本文包括一個示例腳本,用以演示上述過程。





回頁首


軟件需求

本節(jié)中描述的軟件可以免費下載。

安裝下面列出的 某一種數(shù)據(jù)庫:

  1. Cloudscape 10.0 (包括了 IBM DB2 Java Database Connectivity (JDBC) Universal Driver)
  2. Apache DerbyIBM DB2 JDBC Universal Driver

另外,安裝下面列出的 所有軟件:

  • Perl 本技術(shù)文章中給出的安裝說明已使用 ActivePerl version 5.8.4.810 進行了測試。
  • IBM DB2 ODBC。
  • Perl DBI 組件 本技術(shù)文章中的安裝說明已使用 1.4.3 Perl DBI 組件進行了測試。
  • Perl DBD-ODBC 組件. 本技術(shù)文章中的安裝說明已使用 1.10 Perl DBD-ODBC 組件進行了測試。




回頁首


配置 IBM DB2 ODBC 客戶機

為了與 Derby 數(shù)據(jù)庫一起使用 IBM DB2 ODBC 驅(qū)動程序,IBM DB2 客戶機軟件需要知道 Derby 數(shù)據(jù)庫所在的位置和名稱,還需要知道它是一個 ODBC 數(shù)據(jù)源。本節(jié)將展示如何通過 編目節(jié)點 來提供所有這些信息。

本節(jié)中的說明作了如下假設(shè):

  • Derby Network Server 運行在默認端口 1527 上。
  • 您已經(jīng)創(chuàng)建了一個名為 DB1 的 Derby 數(shù)據(jù)庫。

首先,標識遠程數(shù)據(jù)庫所在的主機和端口。在這里,Derby 數(shù)據(jù)庫運行在本地機器("localhost")上,Network Server 在默認端口 1527 上進行監(jiān)聽。接下來,要為該節(jié)點提供一個名稱,例如 CNS。

打開 db2cmd 窗口并編目 CNS 節(jié)點,以訪問 localhost、端口 1527,如下所示:

db2 catalog tcpip node CNS remote localhost server 1527            

接下來,提供將在 CNS 節(jié)點上訪問的數(shù)據(jù)庫名,如下所示:

db2 catalog db DB1 at node CNS authentication server            

最后,將數(shù)據(jù)庫編目為一個 ODBC 數(shù)據(jù)源。您可以通過 Windows ODBC Data Source Administrator 或者使用 CLP 命令來完成這項操作,如下所示:

db2 catalog system odbc data source DB1            

為了檢查上述步驟是否有效,需要發(fā)出以下命令為 DB1 數(shù)據(jù)庫創(chuàng)建 ODBC 數(shù)據(jù)源:

db2 list system odbc data sources            

如果上述步驟有效,那么您將看到 DB1 Data source name existing of type IBM DB2 ODBC DRIVER 的確認。

如果節(jié)點或數(shù)據(jù)庫已經(jīng)被編目,那么上面顯示的命令將失敗。如果遇到錯誤,可使用下面展示的 DB2 UDB 命令取消它們的編目并回到最初:

db2 uncatalog node CNS            db2 uncatalog db DB1            

若需查看對 IBM DB2 UDB catalog 命令的完整描述,請參閱 IBM DB2 Universal Database Command Reference。

用 Derby 驗證 ODBC

確定 ODBC 是否能連接到剛才建立的 Derby 數(shù)據(jù)源 DB1 的一種快捷方法是使用 Windows 中的 ODBC Data Sources 工具。如果是在 Windows XP 中,可以通過 Start --> Control Panel --> Administrative Tools --> Data Sources (ODBC) 來訪問該工具。這將彈出 ODBC Data Source Administrator 窗口。選擇 ‘System DSN’ 標簽頁,如果已經(jīng)正確地編目了 DB1 Data Source,那么可以在這個列表中看到它。

選擇 ‘Name‘ 列下的 DB1,并單擊左邊的‘Configure...’按鈕。您將看到一個類似下圖的窗口。



圖 1. 確認到 Derby 數(shù)據(jù)源的 ODBC 連接

確保 Cloudscape Network Server 運行在端口為 1527 的本地主機上,填充 ‘User ID‘ 和 ‘Password‘ 的值,然后單擊 Connect 按鈕,以測試到 Cloudscape Data Source ‘DB1‘ 的連接。如果連接成功,系統(tǒng)將彈出一個對話框,通知連接成功。





回頁首


安裝 Perl

訪問 http://www.perl.org/。選擇 ‘Get Perl‘,然后在 ‘Download Perl Distributions‘ 部分選擇 ‘ActivePerl for Windows,Solaris, Linux‘。在接下來的頁面中單擊 Download 鏈接,進行注冊,然后將 zip 文件下載到一個臨時目錄中。

將 ActivePerl-5.8.4.810-MSWin32-x86.zip 文件解壓到某個目錄中。完成解壓操作之后,運行 installer.bat 文件。不要在已經(jīng)安裝了 5.6 版 ActivePerl 的系統(tǒng)中安裝 5.8.x 版的 ActivePerl。ActivePerl 5.8 解壓后所在的目錄中有一個 RELEASE.txt 文檔,其中包含了關(guān)于安裝 ActiveState Perl 的更多信息。

確保在 PATH 環(huán)境變量的開頭有 Perl 5.8 版本信息。否則,您可以選擇一個更老的 Perl 版本,例如 MKS 包中的那個 Perl 版本。

Perl 的配置至此已告完成?,F(xiàn)在從命令行執(zhí)行一個簡單的腳本來測試安裝是否成功。





回頁首


從命令行測試 Perl

清單 1 中的代碼是一個簡單的 Perl 腳本,用于測試 Perl 環(huán)境。



清單 1: 一個示例 Perl 腳本
# hello-world.pl            use strict;            print "Where would we be without Hello World?";            

將清單 1 中的內(nèi)容復(fù)制到名為 hello-world.pl 的文件中,然后將其保存到任何目錄中。在執(zhí)行該腳本之前,應(yīng)確保 perl.exe 在當前路徑中。下面是運行 hello-world.pl 文件的命令以及運行該腳本得到的輸出。

C:\temp>perl hello-world.pl            Where would we be without Hello World?            





回頁首


安裝 DBI 模塊

Perl DBI Module 是用于 Perl 的數(shù)據(jù)庫接口。要從 Perl 建立任何到第三方數(shù)據(jù)庫的數(shù)據(jù)庫連接,都需要這個接口。為了下載、安裝和配置該模塊,可以使用剛才安裝的 ActiveState perl 發(fā)行版附帶的 Perl Package Manager (ppm)。ppm 需要訪問 Internet 來下載和安裝這些包。如果已經(jīng)安裝了防火墻軟件,那么可能需要設(shè)置一些環(huán)境變量才能正確使用 ppm。如果必須使用 ppm 變量來安裝 DBI 模塊,那么在安裝說明之后會有關(guān)于這些變量的注意事項。

使用 ppm 安裝 DBI

  • 打開一個命令窗口,輸入 perl -version,測試您是否正在使用適當?shù)?perl 版本。如果您安裝了前面提到的版本,那么 perl release 應(yīng)該是 5.8.4。要使本文中的所有步驟都能成功完成,需要安裝 5.6 或更高的版本。
  • 接著,在提示符后面輸入 ppm ,進入 ActiveState Perl 附帶的 Perl 包管理器。
  • 為了安裝 DBI 組件,只需在 ppm 提示符后面輸入 install DBI 即可。
  • 這就行了!如果還有問題的話,請參閱 dbi.perl.org 站點上關(guān)于在 Windows 上安裝 DBI 的 FAQ。

下面是安裝了 Perl DBI 的成功 ppm 會話的部分輸出。

ppm> install DBI            ====================            Install ‘DBI‘ version 1.43 in ActivePerl 5.8.4.810.            ====================            Downloaded 513616 bytes.            Extracting 69/69: blib/arch/auto/DBI/Driver_xst.h            Installing C:\tools\perl\site\lib\auto\DBI\dbd_xsh.h            Installing C:\tools\perl\site\lib\auto\DBI\DBI.bs            Installing C:\tools\perl\site\lib\auto\DBI\DBI.dll            ...            ...            ...            Installing C:\tools\perl\bin\dbiprof.bat            Installing C:\tools\perl\bin\dbiproxy            Installing C:\tools\perl\bin\dbiproxy.bat            Successfully installed DBI version 1.43 in ActivePerl 5.8.4.810.            

如果正在運行防火墻軟件,并且 ppm 無法下載 Perl Modules,那么可能需要設(shè)置以下環(huán)境變量。

表 1. ppm 無法下載 DBI Module 時所需的環(huán)境變量設(shè)置

set HTTP_proxy=address:port [e.g. 192.0.0.1:8080]
set HTTP_proxy_user=username
set HTTP_proxy_pass=password
set HTTP_proxy_agent=agent [e.g. "Mozilla/5.0"]





回頁首


安裝 DBD-ODBC 驅(qū)動程序

要使所有軟件協(xié)同工作,接下來的步驟是安裝將與 DBI 組件一起使用的 DBD-ODBC 驅(qū)動程序。由于在 DB2 Run-time Client 中已包含了對 Derby 數(shù)據(jù)庫中 ODBC 的支持,因此可以使用 DBD-ODBC 驅(qū)動程序與剛才安裝的 DBI 組件進行會話。Perl Package Manager,即 ppm,將再次用于安裝 DBD-ODBC Version 1.1.0。

  • 打開另一個命令提示符并輸入 ppm。
  • 現(xiàn)在輸入 install DBD-ODBC

 

下面是運行該命名所得到的示例輸出。

ppm> install DBD-ODBC            ====================            Install ‘DBD-ODBC‘ version 1.10 in ActivePerl 5.8.4.810.            ====================            Downloaded 76744 bytes.            Extracting 11/11: blib/arch/auto/DBD/ODBC/ODBC.lib            Installing C:\tools\perl\site\lib\auto\DBD\ODBC\ODBC.bs            Installing C:\tools\perl\site\lib\auto\DBD\ODBC\ODBC.dll            Installing C:\tools\perl\site\lib\auto\DBD\ODBC\ODBC.exp            Installing C:\tools\perl\site\lib\auto\DBD\ODBC\ODBC.lib            Installing C:\tools\perl\html\site\lib\DBD\ODBC.html            Installing C:\tools\perl\html\site\lib\DBD\ODBC\Changes.html            Files found in blib\arch: installing files in blib\lib into architecture depende            nt library tree            Installing C:\tools\perl\site\lib\DBD\ODBC.pm            Installing C:\tools\perl\site\lib\DBD\ODBC\Changes.pm            Successfully installed DBD-ODBC version 1.10 in ActivePerl 5.8.4.810.            





回頁首


DBI 的架構(gòu)和語法

DBI 的架構(gòu)依賴于 DBI 編程接口來將 DBI 調(diào)用轉(zhuǎn)送到 Database Driver,在這里是轉(zhuǎn)送到 DBD-ODBC。使用 DBI 的主要目的之一是使得用于訪問數(shù)據(jù)庫的語法具有獨立性。當 DBI 與適當?shù)尿?qū)動程序一起使用時,可用于通過相同的標準語法訪問多個數(shù)據(jù)庫(甚至可以同時訪問)。

下面的表中列出了一些常見的 DBI 約定和語法。

表 2. DBI 約定和語法

約定   意義
$dbh   數(shù)據(jù)庫句柄
$sth   語句句柄
$rc   通用返回代碼,boolean: true=ok, false=error
$rows   所處理的行數(shù),如果沒有處理行,則為 -1
$sth->Finish()   在語句句柄使用完畢時調(diào)用的方法
$dbh-> Disconnect()   斷開和銷毀數(shù)據(jù)庫句柄時調(diào)用的方法
$dbh->do()   用于非重復(fù)、非 SELECT 語句的方法
$sth->fetchrow_array   一個實用方法,用于取下一行數(shù)據(jù),并將其以包含各字段值的列表的形式返回





回頁首


測試到 Derby Network Server 的連接

在運行要連接到 Derby 數(shù)據(jù)庫的 Perl 腳本之前,應(yīng)使用 DB1 數(shù)據(jù)庫和 ij(Derby SQL 腳本工具)確保到 Derby Network Server 的連接是成功的。如果無法使用 ij,則 Perl 腳本很可能也無法運行。下面顯示了用來啟動 Network Server 上 ijjava 命令,為了便于閱讀,這個命令被分成數(shù)行:

C:\>java -Dij.driver=com.ibm.db2.jcc.DB2Driver            -Dij.protocol=jdbc:derby:net://localhost:1527/            -Dij.user=APP -Dij.password=APP  org.apache.derby.tools.ij            ij version 10.0 (C) Copyright IBM Corp. 1997, 2004.            ij> connect ‘DB1‘;            

如果 ij 命令失敗,則應(yīng)該檢查:

如果 ij 測試成功了,那么就可以運行要連接到 Derby 數(shù)據(jù)庫的 perl 腳本。





回頁首


Perl、DBI、DBD-ODBC、ODBC 和 Derby!

本節(jié)將使用在前面已經(jīng)安裝和配置的所有組件。本節(jié)的示例 perl 腳本使用 DBI 調(diào)用 DBD-ODBC perl 驅(qū)動程序,而該驅(qū)動程序又使用 DB2 ODBC 驅(qū)動程序與 Derby Network Server 聯(lián)系,后者連接到 Derby 數(shù)據(jù)庫 DB1。

下面顯示的清單 2 包含一個示例 Perl 腳本,該腳本創(chuàng)建一個表,將一些行插入表中,并從表中取出一些行,然后刪除該表,并斷開與數(shù)據(jù)庫的連接。其中,名為 DB1 的數(shù)據(jù)庫是早先在 Window 的 ODBC Data Source 管理器中定義的。

將本清單中的內(nèi)容復(fù)制到名為 perlExample.pl 的文件中。



清單 2: 從 Perl 訪問 Derby 數(shù)據(jù)庫 DB1
#perlExample.pl            use DBI;            use strict;            my $data_source = "DBI:ODBC:DB1";            my $user = "dbadmin"; my $password = "testpw";            # Create a database connection handle. Autocommit is On.            # $DBI::errstr - returns the native database engine error            # message from the last DBI method called            my $dbh = DBI->connect($data_source, $user, $password, {AutoCommit =>1})            or die "Can‘t connect to $data_source: $DBI::errstr";            # prepare a single CREATE SQL statement            my $sql = qq( CREATE TABLE STAFF(name VARCHAR(10),job VARCHAR(10)));            # execute the CREATE statement. The do() method can be used for            # non repeated non-SELECT statement.            $dbh->do($sql);            # prepare a single INSERT SQL statement containing literal values. Inserts 2 rows.            my $sql = qq(INSERT INTO STAFF( name, job)            VALUES ( ‘Pearce‘, ‘Clerk‘), (‘Hachey‘, ‘Mgr‘));            # execute the INSERT statement            $dbh->do($sql);            # prepare an INSERT SQL statement that contains parameter markers. Inserts one row.            # This is an example of a SQL statement being prepared once. The bind values            # for each row are provided to the execute method each time it is called.            # The statement does not need to be re-prepared for each row. The application            # typically runs faster.            my $sth = $dbh->prepare(q{INSERT INTO STAFF (name, job) VALUES (‘Smith‘, ?)})            || die $dbh->errstr;            # bind the parameter value            my $value = "President";            $sth->bind_param(1, $value);            # execute the INSERT statement            my $rc = $sth->execute            or die "Can‘t execute statement: $DBI::errstr";            # prepare a SQL SELECT statement            my $sth = $dbh->prepare( q{SELECT name, job FROM STAFF})            or die "Can‘t prepare statement: $DBI::errstr";            # execute the SELECT statement            my $rc = $sth->execute            or die "Can‘t execute statement: $DBI::errstr";            # Use Statement Handle Attributes, NUM_OF_FIELDS, NAME.            # NUM_OF_FIELDS  (This attribute is the number of fields (columns) in            # the data the prepared statement will return.)            # Statements that don‘t return rows of data, like DELETE and CREATE            # set the NUM_OF_FIELDS attribute to 0.            # NAME  (This attribute returns a reference to an array of field names            # for each column.)            my $name = "";            my $job = "";            print "Query will return $sth->{NUM_OF_FIELDS} fields.\n\n";            print "Field names: @{ $sth->{NAME} }\n";            # The fetchrow_array utility method fetches the next row of data and            # returns it as a list containing the field values.            while (($name, $job) = $sth->fetchrow_array) {            print "$name | $job\n";            }            # prepare a SQL DROP statement            my $sth = $dbh->prepare( q{            DROP TABLE STAFF;            }) or die "Can‘t prepare statement: $DBI::errstr";            # execute DROP statement            my $rc = $sth->execute            or die "Can‘t execute statement: $DBI::errstr";            # teminate the connection            $dbh->disconnect;            

現(xiàn)在打開一個命令窗口,進入 perl.exe 所在路徑,并輸入 perl perlExample.pl。

如果一切正常,那么應(yīng)該可以看到如下輸出:

C:\perl_test>perl perlExample.pl            Query will return 2 fields.            Field names: NAME JOB            Pearce | Clerk            Hachey | Mgr            Smith | President            

如果該腳本無法正常運行,那么應(yīng)檢查以下幾項:

  • Derby Network Server 是否已啟動?
  • 是否安裝了所有必需的軟件?
    • Derby 或 Cloudscape
    • DB2 Universal JDBC 驅(qū)動程序(只對 Derby 是必需的)
    • DB2 ODBC 支持
    • Perl
    • Perl DBI 組件
    • Perl DBD-ODBC 驅(qū)動程序

 





回頁首


結(jié)束語

本文向您展示了如何安裝和配置 Perl,描述了如何為使用 IBM DB2 ODBC 驅(qū)動程序的 ODBC 來編目 Derby 節(jié)點,以及如何安裝 Perl DBI 和 DBD-ODBC 組件,還演示了如何使用 Perl 執(zhí)行基本的數(shù)據(jù)庫操作。



參考資料



關(guān)于作者

 

Moira Casey 是 DB2 領(lǐng)域的咨詢工程師。在過去 6 年的時間里,她一直是一名 DB2 方面的測試工程師,最近才轉(zhuǎn)向 Cloudscape。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Bucardo使用文檔
windows上Perl連接SQL Server Linux上Perl查詢SQL Server
MySQL數(shù)據(jù)庫技術(shù)(27)
[Tips] 移植Oracle數(shù)據(jù)庫到PostgreSQL的要點
 freeswitch XML CDRS
安裝DBI組件。 Can''''t locate DBI.pm in @INC
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服