十七、使用 Database Access（数据库访问）组件

    ASP 的 Database Access 组件使用 ActiveX Data Objects (ADO) 提供一种轻而
    易举的方法，可以访问存储在数据库或其他表格式数据结构（如电子表格）中的
    信息，只要它们遵循 Open Database Connectivity (ODBC) 标准即可。在本课中
    ，您将连接到一个 Microsoft? Access 客户数据库，并且显示目录列表。您将学
    习如何使用 SQL SELECT 语句来检索数据，并且创建一个 HTML 表格来显示结果
    。

    ----------------------------------------------------------------------

    识别数据库

    在通过 Database Access 组件使用一个数据库之前，必须在“控制面板”的 OD
    BC 程序中识别这个数据库。在本例中，您将使用本教程提供的一个 Microsoft?
     Access 数据库。

    在运行 Web 服务器 (localhost) 的计算机上，打开“控制面板”。

    双击“ODBC”图标，然后单击“系统 DSN”选项卡。

    DSN 将告诉数据库驱动程序（用来配置数据库并与其通讯的程序）数据库文件所
    在的位置。您可以创建 3 种类型的 DSN: 用户 DSN (User DSN)，只能对您起作
    用； 系统 DSN (System DSN)，可以对计算机的所有用户起作用； 文件 DSN (F
    ile DSN)，将 DSN 信息保存为文件，并且允许所有用户使用相同的数据库驱动程
    序。本教程使用的 DSN 必须是系统 DSN (System DSN) 。

    单击“添加”，选择“Microsoft Access 驱动程序”，然后单击“完成”。

    在“数据源名称”框中，键入 ASPTutorial，然后单击“选择”。选择 BTCustm
    r.mdb 文件（默认情况下位于 WINNT\Help\IIS\Htm\Tutorial 目录中），然后单
    击“确定”。

    查找文字“Tutorial Lesson - ADO Connection”，脚本将插入到找到的文字行
    之后。

    必须先创建一个对象的实例，然后才能使用它。请复制并粘贴以下脚本命令：

    <%

    Set objConnection = Server.CreateObject("ADODB.Connection")

    如果在此以前，另一个用户已经学完了教程的这一部分，那么这些脚本命令就已
    经在“Tutorial Lesson”注释行以下了。请用复制的脚本覆盖已有的脚本，或者
    将未使用过的 Database.asp 从 Template 子目录 (C:\WINNT\Help\iis\htm\tu
    torial/template) 复制到 Tutorial 目录中。

    对于 Database Access 组件来说，您必须指定 ODBC 数据源（要从其中检索数据
    的数据库），方法是打开一个到数据库的连接。复制并粘贴以下脚本命令：

    objConnection.Open "ASPTutorial"

    使用 Database Access 组件的 Execute 方法，可以向数据库发送一个将结构化
    查询语言 (Structured Query Language, SQL) 的 SELECT 命令，并且将返回的
    记录保存到结果集合 (rsCustomersList) 中。请将下列脚本命令复制并粘贴到
    objConnection.Open 语句之后：

    SQLQuery = "SELECT * FROM Customers"

    Set rsCustomersList = objConnection.Execute(SQLQuery)

    %>

    如果将 SQL 查询字符串直接传递给 Execute 方法，而不是先给变量 SQLQuery
    赋值，就可以将这两行合并。当 SQL SELECT 行比较长时，为使脚本易读一些，
    可以将字符串赋值给一个变量（如 SQLQuery），然后将变量名传递给 Execute
    方法。

    显示返回的结果集合

    您可以将结果集合视为一个表格，这个表格的结构由 SQL SELECT 语句中的字段
    决定。显示检索返回的行，就象在结果集合中按行数执行循环一样简单。在本示
    例中，返回的数据显示在 HTML 表格行中。

    在 Database.asp 文件中，查找文字“Tutorial Lesson - Display ADO Data”
    ，将以下脚本复制并粘贴到找到的行之后：

    <% Do Until rsCustomersList.EOF%>

    <tr>

    <td bgcolor="f7efde" align=center>

    <%= rsCustomersList("ContactFirstName")%>

    <%= rsCustomersList("ContactLastName") %>

    </td>

    <td bgcolor="f7efde" align=center>

    <a href="mailto:<%= rsCustomersList("ContactLastName")%>">

    <%= rsCustomersList("ContactLastName")%> </a>

    </td>

    <td bgcolor="f7efde" align=center>

    <%= rsCustomersList("City")%>

    </td>

    <td bgcolor="f7efde" align=center>

    <%= rsCustomersList("StateOrProvince")%>

    </td>

    </tr>

    如果在此以前，另一个用户已经学完了教程的这一部分，那么这些脚本命令就已
    经存在了。用复制的脚本覆盖已有的脚本，或者将未使用过的 Bayshore.asp 从
     Template 目录复制到 Tutorial 目录中。

    当条件为“真”时，VBScriptDo...Loop 语句重复执行一段语句。被重复执行的
    语句可以是脚本命令或 HTML 文本和标记。因此，在循环的每次重复中，您都可
    以用 HTML 画出表格行，并且用脚本命令插入返回的数据。

    要完成循环，还要使用 MoveNext 方法来移动行指针到下一行。因为这一语句仍
    然在 Do...Loop 语句中，所以它一直重复，直到到达文件结尾才停止。请复制以
    下脚本，并将其粘贴到“Tutorial Lesson - Retrieve Next Row”行之后：

    <%

    rsCustomersList.MoveNext

    Loop

    %>

    以纯文本格式保存 Database.asp 文件，并且退出文本编辑器。注意文件后缀 .
    asp 不要被文本编辑器替换。

    若要验证您创建的 ASP 页是否正常运行，请将您的浏览器导向 http://localho
    st/IISHelp/IIS/Help/Htm/Tutorial/Database.asp。（此后若要返回本教程，只
    要在浏览器中单击“上一页”或“Back”按钮即可。）

    自学参考

    如果您正使用 Windows NT，要参阅更完整的 Database Access 组件示例，可以
    访问 Exploration Air 示范节点。单击 Behind the Scenes 图像，可以学习用
    来创建这个 Web 节点的脚本的更多知识。在 Bayshore Travel Web 页上也有指
    向 Exploration Air 示范节点的链接。

    注意 如果您还没有访问 Exploration Air 示范节点，上面的链接将把您带到 E
    xploration Air 主页。此后若要返回本教程，只要在浏览器中单击“上一页”或
    “Back”按钮即可。

    现在，您已经用过了 ActiveX 组件，让我们来学习 模块 3：编写自己的组件。
    ----------------------------------------------------------------------

    模块 3：编写自己的组件

    请选择本课的脚本语言。

    在模块 2 中，您已经熟悉了 ASP 提供的组件，现在该创建自己的组件来满足自
    己的特殊需要了。

    假设您需要创建一个 ASP 程序，以便通过 Web 节点提供特定的财务功能。ASP
    没有直接提供这样的功能，不过您可以通过创建自己的 Java 或 ActiveX 组件来
    解决问题。您将在本模块中学会这些。

    如果要学习如何创建并使用组件，首先使用下面的表格进行选择:
    ----------------------------------------------------------------------

    选择本课要创建的组件类型：

    Visual Basic 5.0 ActiveX 组件

    Visual J++ 1.1 Java? 组件
    ----------------------------------------------------------------------

    要点

    若要保存并查看您在本模块中的工作结果，需要：

    对 localhost Web 服务器上的 /iishelp/iis/htm/tutorial 虚拟目录具有“写
     (Write)”和“改编 Web 服务器 (Script Web server)”权限。详细信息，请参
    阅 设置 Web 服务器权限。

    您的 Windows NT 帐号，必须在 DriveLetter:\Winnt\System32\Inetsrv\ 目录
    及其子目录上具有 Windows NT File System (NTFS) 的读、写和运行程序权限（
    此处的 DriveLetter 代表 localhost Web 服务器的适当的驱动器号，如果您没
    有安装到默认目录下，请用您的安装目录代替 \Winnt\System32）。

    要完成本模块，必须在 localhost Web 服务器上安装：

    Microsoft? Visual Basic 5.0 专业版的 32 位版本或 Visual Basic 5.0 企业
    版开发系统。

    如果已经禁止了 Web 浏览器运行 Java 程序功能，请在开始教程以前启用该功能
    。