Skip to content

3. 附录

3.1. 使用 Visual Studio.net 在 XP 家庭版上构建 Web 项目

Visual Studio.net 支持构建多种类型的项目:

Image

要构建 Web 应用程序项目,通常选择 [Application Web ASP.NET] 类型。此类项目需要本地或远程的 IIS Web 服务器。 若在 Windows 系统上工作,该服务器并不存在且无法安装。因此无法创建 XP 类型的项目。

只要接受一些轻微的不便,就可以绕过这一障碍。只需:

  • 使用 Cassini Web 服务器代替 IIS 服务器。该服务器可在微软官网上免费获取。
  • 使用 [Bibliothèque de classes] 项目代替 [Application Web ASP.NET] 项目

让我们创建一个简单的项目来演示具体操作步骤。

  • 创建一个名为 [Bibliothèque de classes] 的项目
  • 删除 [Class1.vb]

Image

  • 向项目中添加一个新元素,类型为 [Fichier texte],并将其命名为 [demo.aspx]:
  • 文件 [demo.aspx] 被识别为网页,并关联了一个页面编辑器。该编辑器包含两个面板:
  • [design] 用于图形化构建页面
  • [HTML]:用于访问网页代码

Image

  • 执行 [Affichage/Code] 以显示页面的代码部分 VB。没有任何反应。无法访问页面的代码 VB。
  • 进入面板 [HTML],并输入将页面 [demo.aspx] 与代码 [demo.aspx.vb] 关联的代码:

Image

  • 通过 [Affichage code - F7] 查询该页面关联的校验码。得到文件 [demo.aspx.vb]:

Image

  • 页面 [demo.aspx] 现已被识别为网页 [.aspx],并关联了代码 [.aspx.vb]。
  • 让我们回到 [demo.aspx] 的 [Design] 面板,并绘制以下页面:

Image

该页面包含文本以及一个标识符为 [lblHeure] 的 [Label] 类型服务器组件。

  • 进入 [HTML] 面板。其中包含以下代码:
<%@ Page codebehind="demo.aspx.vb" inherits="demo.demo" autoeventwireup="false" Language="vb" %>
Démo ASPX, il est
<asp:Label id="lblHeure" runat="server"></asp:Label>

从语法角度来看,该代码尚不完整 HTML。让我们将其补全:

<%@ Page codebehind="demo.aspx.vb" inherits="demo.demo" autoeventwireup="false" Language="vb" %>
<html>
    <head>
        <title>démo ASPX</title></head>
    <body>
        Démo ASPX, il est
        <asp:Label id="lblHeure" runat="server"></asp:Label>
    </body>
</html>
  • 现在进入代码 [demo.aspx.vb],在其中编写控制代码,该代码将把时间写入组件 [lblHeure]。我们注意到,代码辅助工具 Intellisense 无法识别该组件。
  • 先保存并关闭 [demo.aspx] 和 [demo.aspx.vb],然后重新打开它们。 转到代码 [demo.aspx.vb]。这次,Intellisense 在代码 [demo.aspx.vb] 中成功识别了 [demo.aspx] 中的组件 [lblHeure]。完成代码:

Image

  • 通过 [Générer/Générer demo] 生成项目。如果生成过程顺利,则项目中的 [bin] 文件夹内会生成 DLL:

Image

  • 现在可以进行测试了。我们将 Cassini 服务器(详见下文)配置如下:

Image

Cassini 快捷方式的目标定义如下:

"E:\Program Files\Microsoft ASP.NET Web Matrix\v0.6.812\WebServer.exe" /path:"D:\temp\07-04-05\demo" /vpath:"/demo"
E:\..\WebServer.exe
可执行文件的路径
D:\temp\07-04-05\demo
Visual Studio Web 项目文件夹路径
/demo
关联的虚拟路径
  • 启动 Cassini。其图标将显示在任务栏中。右键单击该图标,选择选项 [Show details] 以验证 Web 服务器的配置是否正确:

Image

  • 使用浏览器访问我们构建的页面,请求 URL [http://localhost/demo/demo.aspx]。我们将获得以下结果:

Image

我们已成功在 Visual Studio 中创建了一个 Web 应用程序,使用的是:

  • [bibliothèque de classes] 类型的项目
  • Cassini Web 服务器

现在,我们已经掌握了在未安装IIS服务器的计算机上构建Web应用程序的方法,例如Windows XP家庭版系统。

3.2. 在哪里可以找到 Cassini Web服务器?

若要使用微软的 .NET 平台,可以使用 Cassini Web 服务器。 该服务器可通过名为 [WebMatrix] 的产品获取,这是一款基于 .NET 平台的免费 Web 开发环境,可在 URL 上使用:

Image

请仔细遵循该产品的安装步骤:

  • 下载并安装 .NET 平台(2004年3月版 1.1)
  • 下载并安装 WebMatrix
  • 下载并安装 MSDE(Microsoft Data Engine),该版本是 SQL Server 的精简版。

安装完成后,[WebMatrix] 产品将出现在已安装的程序中:

Image

[ASP.NET] Web Matrix 链接将启动 IDE 开发版 ASP.NET:

Image

链接 [Class Browser] 启动 .NET 类浏览器工具:

Image

为测试安装,请运行 [WebMatrix]:

首次启动时,[WebMatrix] 会询问新 projet.C 的属性,这是其默认配置。我们可以将其配置为启动时不显示此对话框。此时可通过选项 [File/New File] 实现。 [WebMatrix] 用于为各种 Web 应用程序构建模板。在上文中,我们通过 (1) 指定要构建一个名为 [ASP.ET Page] 的 Web 页面应用程序。通过 (2),我们指定了该 Web 页面的存放目录。 在 (3) 中,我们指定了页面的名称。该名称必须带有 .aspx 后缀。最后在 (4) 中,我们指定要使用 VB.NET 语言进行开发,此外 [WebMatrix] 还支持 C# 和 J# 语言。 设置完成后,[WebMatrix]将显示[demo1.aspx]文件的编辑页面。我们在其中输入以下代码:

Image

  • [Design] 选项卡可用于“设计”要构建的网页。其操作方式与用于构建 Windows 应用程序的 IDE 类似。
  • 在 [Design] 中对网页进行的图形设计,将在 [HTML] 选项卡中生成 HTML 代码
  • 网页可能包含会触发事件的控件,例如按钮,需要对这些事件做出响应。这些事件将由 VB.NET 代码处理,该代码将放置在 [Code] 选项卡中
  • 最终,文件 demo1.aspx 是一个混合了代码 HTML 和代码 VB.NET 的文本文件,它是基于在 [Design] 中完成的图形设计, 以及在 [HTML] 中手动添加的 HTML 代码,以及放置在 [Code] 中的 VB.NET 代码。 完整的文件可在 [All] 选项卡中查看。
  • 一位经验丰富的ASP.ET开发者可以直接使用文本编辑器创建demo1.aspx文件,而无需借助任何IDE工具。

我们选择 [All] 选项,可以看到 [WebMatrix] 已经生成了代码:

<%@ Page Language="VB" %>
<script runat="server">

     ' 在此处插入页面代码
    '

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
         <!-- 在此处插入内容 -->
    </form>
</body>
</html>

我们在此不打算解释这段代码。我们将它转换如下:

<html>
<head>
    <title>Démo asp.net </title>
</head>
<body>
    Il est <% =Date.Now.ToString("hh:mm:ss") %>
</body>
</html>

上述代码是 HTML 与 VB.NET 代码的混合体。该代码被放置在 <% ... %> 标签内。要执行此代码,我们使用 [View/Start] 选项。 如果 Cassini Web 服务器尚未启动,[WebMatrix] 将启动该服务器

Image

我们可以接受此对话框中提供的默认值,并选择选项 [Start]。 此时 Web 服务器已处于活动状态。[WebMatrix] 将启动所在机器的默认浏览器,并请求 URL http://localhost:8080/demo1.aspx:

Image

也可以在 [WebMatrix] 之外使用 Cassini 服务器。服务器的可执行文件位于 <WebMatrix>\<version>\WebServer.exe,其中 <WebMatrix> 是 [WebMatrix] 的安装目录,<version> 是其版本号:

Image

打开一个 DOS 窗口,并进入 Cassini 服务器的文件夹:

E:\Program Files\Microsoft ASP.NET Web Matrix\v0.6.812>dir
...
29/05/2003  11:00               53 248 WebServer.exe
...

不带任何参数运行 [WebServer.exe]:

E:\Program Files\Microsoft ASP.NET Web Matrix\v0.6.812>webserver

此时会弹出一个帮助窗口:

Image

[WebServer] 应用程序(也称为 Cassini Web 服务器)支持三个参数:

  • /port:Web服务的端口号。可以是任意值。默认值为80
  • /path:磁盘上某个文件夹的物理路径
  • /vpath:与上述物理文件夹关联的虚拟文件夹。请注意,其语法并非 /path=路径,而是 /vpath:路径,这与上文帮助面板中的示例 [Example] 所示不同。

将文件 [demo1.aspx] 放置在以下文件夹中:

Image

将物理文件夹 [d:\data\devel\webmatrix] 与虚拟文件夹 [/webmatrix] 关联。Web 服务器可通过以下方式启动:

E:\Program Files\Microsoft ASP.NET Web Matrix\v0.6.812>webserver /port:100 /path:"d:\data\devel\webmatrix" /vpath:"/webmatrix"

此时 Cassini 服务器处于活动状态,其图标会出现在任务栏中。双击该图标:

Image

即可查看服务器的启动参数。 此外,还可以停止 [Stop] 或重启 [Restart] 网页服务器。若点击 [Root URL] 链接,浏览器中将显示服务器网页树的根目录:

Image

点击链接 [demos]:

Image

接着点击链接 [demo1.aspx]:

Image

因此我们可以看到,如果物理文件夹 P=[d:\data\devel\webmatrix] 已与虚拟文件夹 V=[/webmatrix] 关联,且服务器运行在 100 端口上, 那么物理上位于 [P\demos] 中的网页 [demo1.aspx] 将可通过 URL [http://localhost:100/V/demos/demo1.aspx] 在本地访问。

为了避免必须通过 DOS 窗口来启动 Cassini 服务器,可以创建一个指向服务器可执行文件的快捷方式,其属性设置如下:

Image

Cible
"C:\Program Files\Microsoft ASP.NET Web Matrix\v0.6.812\WebServer.exe" /port:80 /path:"D:\data\serge\travail\2004-2005\aspnet\webarticles-010405\version3\web" /vpath:"/webarticles"
Démarrer dans
"C:\Program Files\Microsoft ASP.NET Web Matrix\v0.6.812"

3.3. 在哪里可以找到 Spring?

Spring 的主站点是 [http://www.springframework.org/]。这是 Java 版本的站点。正在开发中的 .NET 版本(2005 年 4 月)位于 [http://www.springframework.net/] 网址。

Image

下载地址为 [SourceForge]:

Image

下载上述压缩包后,请解压:

Image

本文仅使用了文件夹 [bin] 中的内容:

Image

在使用Spring的Visual Studio项目中,必须系统地完成两项操作:

  • 将上述文件放入项目的 [bin] 文件夹中
  • 向项目中添加对程序集 [Spring.Core.dll] 的引用

3.4. 在哪里可以找到 Nunit?

Nunit 的官方网站是 [http://www.nunit.org/]。2005 年 4 月可用的版本是 2.2.0:

Image

下载此版本并进行安装。安装过程会创建一个文件夹,其中包含图形化测试版本:

真正有用的内容位于文件夹 [bin] 中:

Image

Image

上图中的箭头指向图形化测试工具。安装过程还向 Visual Studio 的程序集库中添加了新项,我们现在就来了解这些内容。

创建以下 Visual Studio 项目:

Image

被测试的类位于 [Personne.vb] 中:

Public Class Personne

     ' 私有字段
    Private _nom As String
    Private _age As Integer

     ' 默认构造函数
    Public Sub New()
    End Sub

     ' 与私有字段关联的属性
    Public Property nom() As String
        Get
            Return _nom
        End Get
        Set(ByVal Value As String)
            _nom = Value
        End Set
    End Property

    Public Property age() As Integer
        Get
            Return _age
        End Get
        Set(ByVal Value As Integer)
            _age = Value
        End Set
    End Property

     ' 标识符字符串
    Public Overrides Function tostring() As String
        Return String.Format("[{0},{1}]", nom, age)
    End Function

     ' init 方法
    Public Sub init()
        Console.WriteLine("init personne {0}", Me.ToString)
    End Sub

     ' close 方法
    Public Sub close()
        Console.WriteLine("destroy personne {0}", Me.ToString)
    End Sub

End Class

测试类位于 [NunitTestPersonne-1.vb] 中:

Imports System
Imports NUnit.Framework

<TestFixture()> _
 Public Class NunitTestPersonne

     ' 被测试对象
    Private personne1 As Personne

    <SetUp()> _
    Public Sub init()
         ' 创建 Personne 实例
        personne1 = New Personne
         ' 日志
        Console.WriteLine("setup test")
    End Sub

    <Test()> _
    Public Sub demo()
         ' 屏幕日志
        Console.WriteLine("début test")
         ' 初始化person1
        With personne1
            .nom = "paul"
            .age = 10
        End With
         ' 测试
        Assert.AreEqual("paul", personne1.nom)
        Assert.AreEqual(10, personne1.age)
         ' 屏幕日志
        Console.WriteLine("fin test")
    End Sub

    <TearDown()> _
    Public Sub destroy()
         ' 跟踪
        Console.WriteLine("teardown test")
    End Sub

End Class

有几点需要注意:

  • 方法带有诸如 <Setup()>、<TearDown()> 等属性
  • 要使这些属性被识别,必须满足以下条件:
    • 项目必须引用 [nunit.framework.dll] 程序集
    • 测试类导入命名空间 [NUnit.Framework]

在解决方案资源管理器中右键单击 [References] 即可添加引用:

Image

如果 [Nunit] 的安装成功,则 [nunit.framework.dll] 应出现在所提供的列表中。只需双击该程序集即可将其添加到项目中:

Image

完成上述操作后,测试类 [NunitTestPersonne] 必须导入命名空间 [NUnit.Framework]:

Imports NUnit.Framework

此时,测试类 [NunitTestPersonne] 的属性应被识别。

  • <Test()> 属性指定要测试的方法
  • <Setup()> 属性表示在每个被测方法之前执行的方法
  • <TearDown()> 属性表示在每次测试方法之后要执行的方法
  • 方法 Assert.AreEqual 用于测试两个 entités.Il 是否相等,此外还有许多其他 Assert.xx 类型的方法。
  • 实用程序 NUnit 会在任何 [Assert] 方法失败时立即停止被测试方法的执行并显示错误信息。否则,它将显示成功信息。

让我们配置项目以生成一个 DLL:

Image

生成的 DLL 将命名为 [nunit-demos-1.dll],并默认放置在项目的 [bin] 文件夹中。生成我们的项目。我们在 [bin] 文件夹中得到:

Image

现在启动图形化测试工具 Nunit。请注意,该工具位于 <Nunit>\bin 目录下,名称为 [nunit-gui.exe]。<Nunit> 代表 [Nunit] 的安装目录。界面如下所示:

Image

使用菜单选项 [File/Open] 加载我们项目中的 DLL 和 [nunit-demos-1.dll]:

Image

[Nunit] 能够自动检测加载的 DLL 文件中包含的测试类。 在此,它找到了类 [NunitTestPersonne]。随后,它会显示该类中所有带有 <Test()> 属性的方法。通过按钮 [Run],可以对所选对象启动测试。 如果该对象是类 [NunitTestPersonne],则会测试所有显示的方法。可以通过选择特定方法并调用 [Run] 来请求测试该方法。现在让我们请求执行该类:

Image

方法测试通过时,左侧窗口中该方法旁边会显示一个绿色圆点。测试失败时则显示红色圆点。

右侧的 [Console.Out] 窗口显示了被测试方法生成的屏幕输出。在此,我们希望跟踪一个测试的执行过程:

1
2
3
4
setup test
début test
fin test
teardown test
  • 第 1 行表明属性方法 <Setup()> 在测试前被执行
  • 第 2-3 行由被测试的方法 [demo] 生成(参见上文代码)
  • 第 4 行显示属性方法 <TearDown()> 在测试后执行

3.5. 在哪里可以找到 Firebird 的 SGBD

Firebird 的主网站是 [http://firebird.sourceforge.net/]。下载页面提供以下链接(2005年4月):

Image

我们将下载以下文件:

firebird-win32
适用于 Windows 的 SGBD
firebird-net-provider
一个用于应用程序的类库 NET,它允许在不通过驱动程序 SGBD 的情况下访问 ODBC。
firebird-ODBC-driver
Firebird 的 ODBC 驱动程序

安装这些组件。SGBD 安装在内容类似于以下结构的文件夹中:

Image

二进制文件位于 [bin] 文件夹中:

Image

fbguard.exe
用于启动/停止 SGBD
isql.exe
用于管理数据库的命令行客户端

请注意,默认情况下,SGBD的管理员名为[SYSDBA],密码为[masterkey]。[Démarrer]中已安装以下菜单:

Image

选项 [Firebird Guardian] 可用于启动/停止 SGBD。启动后,SGBD 的图标会保留在 Windows 任务栏中:

若要使用命令行客户端 [isql.exe] 创建和操作 Firebird 数据库,请务必阅读产品附带文档(位于 [doc] 文件夹中)。更快捷的操作方式是使用图形化客户端,例如下文所述的 IB-Expert。

3.6. 在哪里可以找到 IB- Expert?

Firebird 的主网站是 [http://www.ibexpert.com/]。下载页面提供了以下链接:

Image

请选择免费版本 [Personal Edition]。下载并安装后,将生成如下所示的文件夹:

Image

可执行文件为 [ibexpert.exe]。通常在 [Démarrer] 菜单中会有一个快捷方式:

Image

启动后,IBExpert将显示以下窗口:

Image

使用 [Database/Create Database] 选项创建数据库:

Image

Server
可能是 [local] 或 [remote]。这里我们的服务器与 [IBExpert] 位于同一台机器上。因此我们选择 [local]
Database
使用下拉列表中类似 [dossier] 的按钮来指定数据库文件。Firebird 将整个数据库封装在一个文件中,这是其优势之一。只需复制该文件即可将数据库从一台机器迁移到另一台。后缀 [.gdb] 会自动添加。
Username
SYSDBA 是当前 Firebird 发行版的默认管理员
Password
masterkey 是当前 Firebird 发行版中管理员 SYSDBA 的密码
Dialect
要使用的方言为 SQL
Register Database
如果勾选此复选框,IBExpert将在数据库创建完成后显示一个指向该数据库的链接

如果点击创建按钮 [OK] 后,您会收到以下警告:

Image

说明您尚未启动 Firebird。请启动它。此时会弹出一个新窗口:

Image

Server version
[IBExpert] 能够处理各种源自 Interbase 的 SGBD 文件。请使用您已安装的 Firebird 版本

Image

当 [Register] 确认此新窗口后,将得到以下结果:

Image

要访问创建的数据库,只需双击其链接。IBExpert 随后将显示一个树形结构,用于访问数据库的属性:

Image

现在创建一张表。右键单击 [Tables],选择 [New Table] 选项。此时将弹出表属性定义窗口:

首先,通过输入框 [1] 将表命名为 [ARTICLES]:

使用输入框 [2] 定义主键 [ID]:

双击字段的 [PK](主键)区域,即可将该字段设为主键。使用 [3] 按钮添加字段:

Image

在“编译”定义之前,表不会被创建。 使用上方的 [Compile] 按钮来完成表的定义。IBExpert 会准备生成表的 SQL 查询,并请求确认:

Image

有趣的是,IBExpert 会显示其已执行的 SQL 查询。 这既有助于学习 SQL 语言,也有助于了解可能使用的专有方言 SQL。 按钮 [Commit] 用于确认当前事务,[Rollback] 用于取消该事务。 此处通过 [Commit] 进行确认。操作完成后,IBExpert 将创建的表添加到数据库的树形结构中:

Image

双击该表即可查看其属性:

Image

通过面板 [Constraints],我们可以为该表添加新的完整性约束。让我们打开它:

Image

我们可以看到之前创建的主键约束。还可以添加其他约束:

  • 外键 [Foreign Keys]
  • 字段完整性约束 [Checks]
  • 字段唯一性约束 [Uniques]

请注意:

  • 字段 [ID, PRIX, STOCKACTUEL, STOKMINIMUM] 的值必须大于 0
  • 字段 [NOM] 必须不为空且唯一

打开[Checks]面板,在约束定义区域中右键单击以添加新约束:

Image

定义所需的约束条件:

Image

请注意,上文中的约束 [NOM<>''] 使用的是两个单引号,而非双引号。点击上方的 [Compile] 按钮编译这些约束:

Image

同样,IBExpert 通过列出已执行的 SQL 查询,再次展示了其教学功能。现在我们转到 [Constraints/Uniques] 面板,指定名称必须是唯一的:

Image

定义约束条件:

Image

编译该约束。完成后,打开表 [ARTICLES] 的面板 [DDL]:

Image

该面板会生成包含所有约束条件的表生成代码 SQL。我们可以将此代码保存到脚本中,以便日后重新执行:

SET SQL DIALECT 3;
SET NAMES NONE;
CREATE TABLE ARTICLES (
    ID            INTEGER NOT NULL,
    NOM           VARCHAR(20) NOT NULL,
    PRIX          DOUBLE PRECISION NOT NULL,
    STOCKACTUEL   INTEGER NOT NULL,
    STOCKMINIMUM  INTEGER NOT NULL
);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_ID check (ID>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_PRIX check (PRIX>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKACTUEL check (STOCKACTUEL>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKMINIMUM check (STOCKMINIMUM>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_NOM check (NOM<>'');
ALTER TABLE ARTICLES ADD CONSTRAINT UNQ_NOM UNIQUE (NOM);
ALTER TABLE ARTICLES ADD CONSTRAINT PK_ARTICLES PRIMARY KEY (ID);

现在是时候向表 [ARTICLES] 中插入数据了。为此,请使用其面板 [Data]:

Image

通过双击表中每行对应的输入字段即可输入数据。 点击按钮 [+] 可添加新行,点击按钮 [-] 可删除行。这些操作均在事务中进行,需通过按钮 [Commit Transaction] 进行提交。若未提交,数据将丢失。

IBExpert 允许通过选项 [Tools/SQL Editor] 或 [F12] 生成 SQL 查询。 此时可访问一个功能强大的 SQL 查询编辑器,用于执行查询。这些查询会被保存,因此可以回溯已执行的查询。以下是一个示例:

Image

通过上方的 [Execute] 按钮执行 SQL 查询。结果如下:

Image

我们的演示到此结束。IBExpert与Firebird的组合对于学习数据库而言非常出色。

3.7. 安装并使用 驱动程序ODBC用于[Firebird]

3.8. 安装驱动程序

[Firebird] 下载页面(第 3.5 节)中的 [firebird-odbc-provider] 链接可访问 ODBC 驱动程序。 安装完成后,它将出现在已安装的 ODBC 驱动程序列表中。

3.9. 创建 ODBC 源

  • 运行工具 [Démarrer -> Paramètres -> Outil de configuration -> Outils d'administration -> Sources de données ODBC]:

Image

  • 将显示以下窗口:

Image

  • 在 [Add] 面板中添加一个新的系统数据源([System DSN] 面板),并将它与上一节中创建的 Firebird 数据库关联:

Image

  • 首先,我们需要指定要使用的驱动程序。在上图中,我们选择了Firebird的驱动程序,然后执行[Terminer]。此时,Firebird驱动程序向导将接管操作:

Image

  • 我们填写各个字段:

Image

DSN [demo-odbc-firebird]
源文件名称 DSN - 可以是任意名称
Database [D:\..\DBARTICLES.GDB]
要使用的 Firebird 数据库名称 BD —— 使用 [Browse] 指定对应的 .gbd 文件
Database Account [SYSDBA]
用于连接数据库的用户名
Password [masterkey]
与该用户名关联的密码

[Test connection] 按钮用于验证我们提供的信息是否有效。使用前,请先运行 SGBD [Firebird]:

Image

  • 通过反复执行 [OK] 操作,直至 ODBC 向导验证通过

3.10. 测试源文件 ODBC

验证源文件是否正常运行有多种方法 ODBC。这里我们将使用 Excel:

Image

  • 使用上述选项 [Données -> Données externes -> Créer une requête]。此时将弹出数据源定义向导的第一个窗口。面板 [Bases de données] 列出了当前机器上已定义的数据源:

Image

  • 选择我们刚刚创建的源 ODBC [odbc-firebird-articles],并进入下一步:

Image

  • 此窗口列出了源 ODBC 中可用的表和列。我们选择整个表:

Image

  • 接着进行下一步,使用 [Suivant]:

Image

  • 此步骤允许我们筛选数据。此处我们不进行任何筛选,直接进入下一步:

Image

  • 此步骤允许我们对数据进行排序。我们不进行排序,直接进入下一步:

Image

  • 最后一步询问我们希望如何处理数据。在此,我们将数据导出到Excel:

Image

  • 此时,Excel会询问将提取的数据保存到何处。我们将数据保存到当前工作表的A1单元格开始的位置。随后,数据便被导入到Excel工作表中:

Image

还有其他方法可以测试 ODBC 数据源的有效性。 例如,可以使用在URL [http://www.openoffice.org]上提供的免费套件OpenOffice。以下是一个使用文本OpenOffice的示例:

  • OpenOffice 窗口左侧的图标可访问数据源。此时界面将切换,显示一个数据源管理区域:

Image

  • 已预定义了一个数据源,即 [Bibliography]。右键单击数据源区域,即可通过选项 [Gérer les sources de données] 创建一个新的数据源:

Image

  • [Gestion des sources de données] 向导可用于创建数据源。右键单击数据源区域,即可通过 [Nouvelle source de données] 选项创建一个新的数据源:

Image

Nom [odbc-firebird-articles]
任意名称。此处采用了数据源名称 ODBC
Type de BD [odbc]
OpenOffice 能够通过 BD、JDBC、ODBC 或直接(MySQL、Dbase 等)处理不同类型的 OpenOffice。 在本示例中,需选择 ODBC
URL de la source de données
输入字段右侧的按钮可让我们访问该机器的 ODBC 源列表。我们选择源 [odbc-firebird-articles]
  • 转到 [ODBC] 面板,在此处定义用于登录的用户身份:

Image

Nom d'utilisateur [sysdba]
源文件的所有者为 ODBC
  • 转到面板 [Tables]。系统会要求输入密码。此处的密码是 [masterkey]:

Image

  • 执行 [OK]。随后将显示源文件 ODBC 的表列表:

Image

  • 我们可以定义将在文档 [OpenOffice] 中显示的表格。这里我们选择表格 [ARTICLES],并生成 [OK]。数据源的定义已完成。它随后会出现在当前文档的数据源列表中:

Image

  • 我们可以使用鼠标将上方的表格 [ARTICLES] 拖拽到文本 [OpenOffice] 中:

Image

3.11. ODBC Firebird 数据源的连接字符串

  • 启动 Visual Studio 并显示服务器资源管理器 [Affichage/Explorateur de serveurs]:
  • 右键单击 [Connexion de données] 并选择 [Ajouter une connexion] 选项:

Image

  • 在 [Provider] 面板中,指定要使用源文件 ODBC(参见上文),然后切换到 [Connection] 面板:

Image

Use data source name
[demo-odbc-firebird]
在组合框中选择源 ODBC。刚刚创建的源应会显示出来。如有需要,可使用 [Refresh] 刷新 ODBC 的源列表。
User name [SYSDBA]
用于连接数据库的用户名
Password [masterkey]
与该用户名关联的密码

同样,通过按钮 [Test Connection] 可验证信息的有效性:

Image

  • 通过 [OK] 确认向导。此时,数据源将显示在 Visual Studio 的 [Explorateur de serveurs] 窗口中:

Image

  • 双击表 [ARTICLES],即可访问该表的数据:

Image

  • 如果右键单击链接 [Firebird Server D:\temp\... ] 并选择 [Propriétés] 选项,即可访问连接属性:

Image

  • 连接字符串 [ConnectString] 是一个值得了解的属性,因为代码 .NET 需要它来建立与数据库的连接。此处的连接字符串为:
Provider=MSDASQL.1;Persist Security Info=False;User ID=SYSDBA;Data Source=demo-odbc-firebird;Extended Properties="DSN=demo-odbc-firebird;Driver=Firebird/InterBase(r) driver;Dbname=D:\temp\07-04-05\firebird\DBARTICLES.GDB;CHARSET=NONE;UID=SYSDBA"

该连接字符串中的许多元素都有默认值。我们可以直接使用以下连接字符串:

"DSN=demo-odbc-firebird;UID=SYSDBA;PASSWORD=masterkey"

至此,我们对 ODBC 驱动程序的介绍就结束了。

3.12. 在哪里可以找到 SGBD、 、MSDE?

MSDE 是微软 SGBD SQL 服务器的免费版本。可在 URL [http://www.microsoft.com/sql/msde/downloads/download.asp] 处找到:

下载安装文件,然后双击下载的可执行文件安装 SGBD。此时会弹出一个窗口,要求选择安装目录。该标题容易引起误解。这是一个临时文件夹,安装完成后可以删除:

请仔细阅读文件 [ReadmeMSDE2000A.htm]。上述的安装程序是 [setup.exe]。它通过命令行启动,以便传入参数。主要参数如下:

Paramètre
描述

SAPWD="MotDePasseRenforcé"
指定要分配给管理员登录名“sa”的强密码。

INSTANCENAME="NomInstance"
定义实例名称。如果未指定 INSTANCENAME,安装程序将安装一个默认实例。

其他常用于自定义安装的参数包括:

Paramètre
描述

DISABLENETWORKPROTOCOLS=n
指定实例是否接受来自其他计算机上运行的应用程序的网络连接。 默认情况下,或者如果您指定 DISABLENTWORKPROTOCOL=1,安装程序会将实例配置为拒绝网络连接。指定 DISABLENETWORKPROTOCOLS=0 以启用网络连接。
SECURITYMODE=SQL
指定实例应以混合模式安装,即该实例支持 Windows 身份验证和 SQL 身份验证用于连接

DATADIR="chemin_dossier_données"
指定安装程序安装系统数据库、错误日志和安装脚本的文件夹。 为 chemin_dossier_données 指定的值必须以反斜杠 (\) 结尾。对于默认实例,安装程序会在指定的值后添加 MSSQL\。 对于命名实例,安装程序会添加 MSSQL$NomInstance\,其中 NomInstance 是通过参数 INSTANCENAME 指定的值。 安装程序将在指定位置创建三个文件夹:Data 文件夹、Log 文件夹和 Script 文件夹。

TARGETDIR="chemin_dossier_exécutables"
指定安装程序将 MSDE 2000 的可执行文件安装到的文件夹。 为 chemin_dossier_exécutables 指定的值必须以反斜杠 (\) 结尾。对于默认实例,安装程序会在指定的值后添加 MSSQL\Binn。 对于命名实例,安装程序会添加 MSSQL$NomInstance\Binn,其中 NomInstance 是通过参数 INSTANCENAME 指定的值。

阅读完上述安装建议后,我们进入安装文件已解压的文件夹,并执行以下 DOS 命令(在无网络环境下使用 SGBD):

dos>setup INSTANCENAME="MSDE140405" SECURITYMODE=SQL SAPWD="azerty"
  • INSTANCENAME="MSDE140405" - 这将是我们 MSDE 实例的名称。可以安装多个实例。
  • SECURITYMODE=SQL - 数据库管理系统将以混合身份验证模式运行。这样,我们就可以通过两种方式连接到 MSDE:
    • 使用 Windows 管理员账户
    • 使用 MSDE 账户——此时需要输入登录名和密码。这是在程序连接 SGBD 数据库时应采用的模式。
  • SAPWD="azerty"——此处为 SGBD 用户账户的密码。用户 [sa] 拥有对 SGBD 的管理权限。

若要在网络中使用 SGBD,需执行以下命令:

dos>setup INSTANCENAME="MSDE140405" SECURITYMODE=SQL SAPWD="azerty" DISABLENETWORKPROTOCOLS=0

安装程序非常简洁,且在无任何提示的情况下结束……不过可以发现,SGBD是通过[Menu Démarrer -> Panneau de configuration -> Ajouter et supprimer des programmes]选项安装的:

Image

通常安装路径为 C:\Program Files\Microsoft SQL Server\MSSQL$nomInstance:

在安装目录下的 [LOG] 文件夹中,可以找到 SGBD 安装阶段的日志文件。其中包含一条重要信息:MSDE 实例的名称:

2005-04-14 08:14:29.37 spid4     Le nom du serveur est «PORTABLE1_TAHE\MSDE140405».

了解该名称非常重要,因为 SGBD 的所有客户端都需要它。如果没有这些日志,可以通过 MSDE 服务器(即 [machine_windows\nom_instance_MSDE])来获取该名称。该机器的名称可在多个位置找到。例如:

  • 在桌面上右键点击 [poste de travail],选择 [propriétés] 选项,然后进入 [Nom de l'ordinateur] 面板:

Image

目前尚不清楚如何启动服务器 MSDE。通常会在 [Démarrer/Démarrage] 中放置一个快捷方式。

Image

查看该快捷方式的属性,发现其目标路径如下:

"C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqlmangr.exe" /n

在文件夹 [ C:\Program Files\Microsoft SQL Server] 中,存在以下子文件夹:

Image

  • MSSQL$MSDE140405 是我们刚刚安装的 MSDE 实例的文件夹。
  • MSSQL 是先前实例 MSDE 的文件夹。由于它没有名称,因此我们称其为默认实例。
  • 文件夹 [80] 是已安装的各个 MSDE 实例共用的文件夹。 启动 MSDE 实例的快捷方式的目标 [sqlmangr.exe] 位于文件夹 [ 80\Tools\Binn] 中。
通过 [Démarrer -> Programmes -> Démarrage] 的快捷方式启动 MSDE。除了状态栏中出现了一个图标外,几乎没有任何反应:
双击该图标:
此处提供的 MSDE 服务器是本机上的默认服务器
[PORTABLE1_TAHE]。需要提醒的是,
我们安装的 MSDE 服务器名为
[PORTABLE1_TAHE\MSDE140405]。我们将
服务器名称:
如果一切顺利,[MSDE140405]实例应已启动:

现在可以进行初步验证。 在包含 [sqlmangr.exe] 的同一文件夹中,有一个名为 [osql.exe] 的控制台客户端,它允许连接到 MSDE 服务器并执行 SQL 命令。 在安装过程中,我们为服务器 MSDE 的管理员 [sa] 设置了密码 [azerty]。 我们将通过控制台客户端连接到新安装的服务器。若执行命令 [osql -?],将显示可用的参数列表:

C:\Program Files\Microsoft SQL Server\80\Tools\Binn>osql -?
utilisation : osql
  [-U ID de connexion]
  [-P mot de passe]
  [-S serveur]
  [-H nom de l'hôte]
  [-E connexion approuvée]
  [-d utiliser le nom de la base de données]
  [-l limite du temps de connexion]
  [-t limite du temps de requête]
  [-h en-têtes]
  [-s séparateur de colonnes]
  [-w largeur de colonne]
  [-a taille du paquet]
  [-e entrée d'écho]
  [-I Activer les identificateurs marqués]
  [-L liste des serveurs]
  [-c fin de cmd]           [-D nom ODBC DSN]
  [-q "requête cmdline"]
  [-Q "requête cmdline" et quitter]
  [-n supprimer la numérotation]
  [-m niveau d'erreur]
  [-r msgs vers stderr]
  [-V severitylevel]
  [-i fichier d'entrée]
  [-o fichier de sortie]
  [-p imprimer les statistiques]  [-b abandon du lot d'instruction après erreur]

  [-X[1] désactive les commandes [et quitte avec un avertissement]]
  [-O utiliser le comportement Old ISQL désactive les éléments suivants]
      <EOF> traitement par lot d'instructions
      Mise à l'échelle automatique de la largeur de la console
      Messages larges
      niveau d'erreur par défaut de  -1 au lieu de 1
  [-? description de la syntaxe]

按照上述说明启动服务器 [MSDE140405],然后在 DOS 窗口中,使用 [osql] 以 [sa, azerty] 的身份连接到服务器 [portable1_tahe\msde140405]:

C:\Program Files\Microsoft SQL Server\80\Tools\Binn>OSQL.EXE -U sa -S portable1_tahe\msde140405 -P azerty
1>

提示符 [1>] 表示 [osql] 正在等待命令。 我们已成功连接。要正确使用 [osql],需查阅 MSDE 的文档。该文档提供多种格式(pdf、htmlhelp 等)。此文档内容非常庞大。 通常建议使用图形化客户端来操作 MSDE 数据库。稍后将介绍相关操作。要退出 [osql],请使用命令 [exit]:

1> exit

接下来我们将了解如何在新安装的 MSDE 服务器中创建数据库。在此之前,我们将简要介绍一个名为 [MSDE Manager] 的工具,该工具可用于修改 MSDE 服务器的身份验证模式。 实际上,如果按照默认安装选项安装此类服务器,服务器的身份验证模式将采用[authentification windows]类型。此类身份验证仅允许在Windows机器上已注册的用户(可能通过域)进行访问。 对于希望连接数据库以利用其内容的 VB.NET 程序而言,这种模式并不实用。对于通过 JDBC 驱动程序访问 SGBD 的 Java 应用程序来说,情况则更为棘手。 因此,建议采用混合身份验证,该方式在原有身份验证基础上,还支持在 SGBD 中声明的(用户名、密码)组合。[MSDE Manager] 工具可用于执行此操作。

3.13. 在哪里可以找到 MSDE Manager?

[MSDE Manager]是SGBD和MSDE的管理工具。可在URL和[http://www.valesoftware.com/]中找到。

我们可通过上述链接下载免费版本:

Image

Image

试用版有效期较短。这正合我们心意,因为我们仅将其用于一次非常具体的操作。我们下载并安装该产品。桌面会生成一个快捷方式。我们通过它启动 MSDE Manager。经过前几个窗口后,我们看到如下界面:

Image

  • 启动 MSDE140405 服务器
  • 您必须以管理员身份登录该 Windows 机器
  • 右键单击链接 [SQL Server Group],并选择选项 [New SQL Server Registration]:

Image

Image

将显示以下属性页面:

Server Name 
portable1_tahe\msde140405 - 您要连接的 MSDE 实例的名称
Connection 
Windows 身份验证 - 此模式始终可用,允许 Windows 计算机的管理员连接到服务器 MSDE
Server Group 
选择显示的唯一服务器组 [SQL Server Group]

单击后,将显示服务器属性树:

Image

我们可以开始创建数据库。但我们不会这样做,因为我们将使用另一款产品,即之前研究过的 IBExpert 产品的克隆版本。 我们只需更改 MSDE 的身份验证模式。右键单击上方的 MSDE140405 服务器,并选择 [Design] 选项:

Image

此时将显示以下信息窗口:

Image

[General]面板显示了当前连接的MSDE服务器的信息。我们需要关注的是[Security]页面:

Image

在此需确认,MSDE的认证模式确实为[SQL Server and Windows]。这样,我们就可以通过两种方式连接到MSDE:

  • 使用 Windows 管理员账户——本文中采用的就是这种方式
  • 使用 MSDE 账户——此时系统会要求输入用户名和密码。若程序需连接 SGBD 数据库,应采用此模式。

确认选择后,退出 MSDE Manager。此后将不再需要该程序。 要创建 MSDE 数据库,我们将使用另一款工具:EMS MS SQL Manager。

3.14. 在哪里可以找到 EMS、 、MS 和 SQL Manager?

EMS MS SQL Manager 是一款图形化工具,用于操作 SGBD Microsoft SQL Server 以及 MSDE。它与前文所述的IB-Expert工具非常相似。该工具可从URL [http://sqlmanager.net/](2005年4月)获取:

Image

该网站为众多 SGBD 提供了管理工具。请点击以下链接:

Image

上文我们选择了该产品的精简版。下载并安装它。您将获得一个类似于以下结构的文件夹:

Image

可执行文件为 [MsManager.exe]。通常在菜单中会提供一个快捷方式 [Démarrer]:

Image

启动后,MS SQL Manager 将显示以下窗口:

Image

首先,使用选项 [Database/Register Host] 注册我们要工作的服务器 MSDE:

注释

  • 步骤 1 - 如前所述,MSDE 支持两种身份验证模式:Windows 和 SQL Server。在 [windows] 模式下,使用的是 Windows 机器上的账户。 在 [SQL Server] 模式下,使用的是 SGBD 的账户。 [SQL Server] 可在 [Windows] 模式或混合模式 [Windows, SQL Server] 下运行。 [Windows] 身份验证模式始终存在。而混合身份验证模式则并非始终处于激活状态。我们已了解如何通过 MSDE Manager 将其激活。上文中的登录操作是使用管理员账户进行的。
  • 步骤 2 - 认证成功后,系统将显示 MSDE 的默认数据库。上图中,所有数据库均已被选中。

注释

  • 步骤 3:可选择所选数据库的管理选项。此处保留了默认提供的选项。
  • 步骤 4:点击 [Register] 按钮,将服务器 MSDE 保存

随后,服务器 MSDE 便会出现在数据库浏览器中:

Image

使用 [Database/Create Database] 选项创建数据库:

步骤 2:

当此信息页面出现时,表示数据库 [dbarticles] 已创建。可通过 [Test Connect] 按钮进行确认。在 [Database alias] 字段中可输入任意内容。此处我们输入:

  • 数据库名称
  • 数据库所在的服务器名称 MSDE
  • 该数据库的所有者用户 [admarticles] 及其密码 [mdparticles]。该用户尚未创建,但即将创建。

步骤 3:

  • 点击按钮 [Register],我们将新数据库保存至 [MS SQL Server ]。保存后,数据库 [admarticles] 会出现在数据库列表中。双击该数据库即可显示其属性树。

创建一个新的登录账号,该账号将作为数据库 [admarticles] 的管理员。

  • 选择选项 [Tools/Login manager]:

Image

  • 可以看到已有两个登录账号被定义:
    • [BUILTIN\Administrateurs]:该登录名使用Windows身份验证。它代表托管MSDE服务器的Windows机器上的管理员
    • sa:该登录名使用SQL身份验证。默认情况下,它是MSDE服务器的管理员。 需要提醒的是,根据 SGBD 和 MSDE 的安装配置,其密码为 [azerty]。
  • 右键单击登录区域,添加一个新登录账号:
  • 此时将弹出一个输入表单,我们在其中定义新登录账号的属性:

Image

  • 登录名:adarticles
  • 密码:mdparticles
  • 点击按钮 [OK] 后,MS Manager 会向我们展示即将执行的查询 SQL:

Image

上文展示的SQL语言是Transact-SQL,即MSDE中的SQL语言。我们要求[OK]执行此代码

  • 新登录名已插入登录名列表:

Image

  • 在数据库 [dbarticles] 的属性窗口中,右键单击 [users] 以创建一个对数据库 [dbarticles] 具有权限的用户:

Image

  • 随后将显示以下窗口:

Image

  • 在 [Login] 下拉列表中显示现有登录账号列表。选择登录账号 [admarticles]。
  • 在 [Name] 中输入用户名。 同一登录名可关联多个用户。因此,在 MSDE 中,创建用户需先创建登录名。[User] 面板将变为如下所示:

Image

  • 现在我们转到面板 [Member Of],该面板将用于定义用户的权限:

Image

  • 我平时并不常使用 MSDE,也不清楚左侧窗口中列出的各个角色的确切含义。 角色[db_owner]颇具吸引力(owner=所有者)。因此,我们为用户[admarticles]选择该角色:

Image

  • 我们通过上方的 [Compile] 按钮确认选择。提交执行的 SQL 查询如下:

Image

  • 我们通过 [OK] 进行编译。现在,我们拥有了数据库用户 [dbarticles]:

Image

  • 现在创建一个表。右键单击 [Tables],选择 [New Table] 选项。此时将显示表属性定义窗口:

Image

  • 首先,在输入框 [Table Name] 中为该表命名 [ARTICLES]。然后转到面板 [Fields]:

Image

  • 定义以下字段:

Image

只要尚未“编译”我们的定义,表就不会被创建。 请使用上方的 [Compile] 按钮来完成表的定义。[MS SQL Manager] 会准备生成表的查询 SQL 并请求确认:

Image

有趣的是,[MS SQL Manager] 会显示其已执行的 SQL 查询。这有助于学习 Transact-SQL 语言。 按钮 [Commit] 用于提交当前事务,[Rollback] 用于取消事务。 此处通过 [Commit] 确认该操作。完成此操作后,[MS SQL Manager] 将创建的表添加到数据库树结构中:

Image

双击该表即可查看其属性:

Image

通过面板 [Checks],我们可以为该表添加新的完整性约束。对于表 [ARTICLES],我们将创建以下约束:

  • 字段 [ID, PRIX, STOCKACTUEL, STOKMINIMUM] 的值必须 >=0
  • 字段 [NOM] 必须不为空

在 [Checks] 面板中,右键单击其空白区域以添加新的约束 [New check]:

Image

  • 约束编辑表如下所示:

Image

Name:约束名称

:约束作用的表

定义:约束表达式

通过上方的 [Compile] 按钮可编译该约束。

  • 再次点击 [MS SQL Manager] 显示已执行的 SQL 命令:

Image

  • 通过按钮 [Commit](未显示)进行确认。若返回表 [ARTICLES] 的面板 [Checks],将显示新的约束:

Image

  • 我们同样定义其他约束,最终得到以下列表:

Image

完成上述操作后,打开表 [ARTICLES] 中的面板 [DDL]:

Image

该面板提供了生成该表及其所有约束条件的 Transact-SQL 代码。我们可以将此代码保存到脚本中,以便日后重新执行:

CREATE TABLE [ARTICLES] (
  [id] int NOT NULL,
  [nom] varchar(20) COLLATE French_CI_AS NOT NULL,
  [prix] float(53) NOT NULL,
  [stockactuel] int NOT NULL,
  [stockminimum] int NOT NULL,
  CONSTRAINT [ARTICLES_uq] UNIQUE ([nom]),
  PRIMARY KEY ([id]),
  CONSTRAINT [ARTICLES_ck_id] CHECK ([id] > 0),
  CONSTRAINT [ARTICLES_ck_nom] CHECK ([nom] <> ''),
  CONSTRAINT [ARTICLES_ck_prix] CHECK ([prix] >= 0),
  CONSTRAINT [ARTICLES_ck_stockactuel] CHECK ([stockactuel] >= 0),
  CONSTRAINT [ARTICLES_ck_stockminimum] CHECK ([stockminimum] >= 0)
)
ON [PRIMARY]
GO

现在是时候向表 [ARTICLES] 中插入一些数据了。为此,请使用其面板 [Data]:

Image

按钮 [+] 用于添加一行,按钮 [-] 用于删除一行。数据通过直接在表中每行的输入字段中输入来添加。通过下方的按钮 [Post Edit] 可以确认一行:

Image

创建两条商品:

Image

[MS SQL Manager] 允许通过选项 SQL 或 [Tools/Show SQL Editor] 生成查询。 此时即可访问一个功能强大的 SQL 查询编辑器,用于执行查询。这些查询会被保存,因此可以回溯已执行的查询。以下是一个示例:

Image

通过上方的 [Execute] 按钮执行 SQL 查询。结果如下:

Image

我们的演示到此结束。[MS SQL Manager - MSDE]这对组合,与[IBExpert - Firebird]一样,同样非常适合用于学习数据库。

3.15. 创建源文件 ODBC [MSDE]

ODBC驱动程序(适用于SQL Server)通常默认安装在Windows机器上。

  • 运行 [Démarrer -> Paramètres -> Outil de configuration -> Outils d'administration -> Sources de données ODBC] 工具:

Image

  • 将显示以下窗口:

Image

  • 在“系统数据源”面板([System DSN])中添加一个新的数据源 [Add],并将它与上一节中创建的数据库 MSDE 关联:

Image

  • 首先,我们需要指定要使用的驱动程序 ODBC。 如上所示,我们先为 [SQL Server] 选择驱动程序,然后进行 [Terminer] 的操作。此时,ODBC 驱动程序的向导(基于 [SQL Server])将接管操作:

Image

  • 我们填写各个字段:
Nom [odbc-msde-articles]
源文件名 ODBC - 可以是任意名称
Description
可以是任意名称
Serveur SQLMap
portable_tahe\msde140405
存储源数据 ODBC 的服务器名称 MSDE
  • 我们创建 [Suivant] 来提供新信息:

Image

  • 我们填写各个字段:
Authentification SQL Server
指定将使用在服务器 MSDE 中声明的用户名连接到数据源 ODBC
ID de connexion [admarticles]
用户登录名
Mot de passe [mdparticles]
用户密码
  • 请注意,这是我们首次使用前文创建的用户(admarticles、mdparticles)。再次执行 [Suivant] 以生成以下新页面:

Image

  • 我们填写各个字段:
Changer la base ...
我们将 [dbarticles] 选定为用户 [admarticles] 的默认数据库
  • 执行 [Suivant] 以生成以下新表单:

Image

  • 我们接受默认值并生成 [Terminer]。以下是即将创建的源 ODBC 的特性摘要:

Image

  • 通过 [Tester la source de données] 按钮,我们可以验证信息是否有效。请确认 MSDE 已启动,然后测试连接:

Image

  • 现在我们可以确定 [admarticles, mdparticles] 这一对已成功识别。

如需进行进一步测试,读者可按照第 3.10 节所述的步骤操作。

3.16. 连接到 MSDE 数据库的连接字符串

  • 启动 Visual Studio 并显示服务器资源管理器 [Affichage/Explorateur de serveurs]:
  • 右键单击 [Connexion de données],并选择 [Ajouter une connexion] 选项:

Image

  • 在 [Provider] 面板中,指定要使用 SQL 服务器作为源,然后切换到 [Connection] 面板。请注意,此处不通过 ODBC 驱动程序。

Image

Nom de serveur
[portable1_tahe\msde140405]
要连接的服务器名称 MSDE
Nom d'utilisateur [admarticles]
用于连接数据库的用户名
Mot de passe [mdparticles]
与该用户名关联的密码
base de données [dbarticles]
要操作的数据库

点击按钮 [Tester la connexion] 可验证信息是否有效:

Image

  • 通过 [OK] 确认向导。颇为奇怪的是,新窗口会要求输入连接参数:

Image

  • 重新输入这些信息并执行 [OK]。此时,数据源将出现在 Visual Studio 的 [Explorateur de serveurs] 窗口中:

Image

  • 双击表 [ARTICLES],即可访问该表的数据:

Image

  • 若在 [Explorateur de serveurs] 面板中右键单击链接 [portable1_tahe\msde140405.dbarticles.admarticles],并选择 [Propriétés] 选项,即可访问连接属性:

Image

  • 连接字符串 [ConnectString] 是一个值得了解的属性,因为代码 .NET 需要它来建立与数据库的连接。此处的连接字符串为:
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=admarticles;Initial Catalog=dbarticles;Data Source=portable1_tahe\msde140405;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=PORTABLE1_TAHE;Use Encryption for Data=False;Tag with column collation when possible=False

该连接字符串中的许多元素都有默认值。我们可以直接使用以下连接字符串:

"Provider=SQLOLEDB.1;Persist Security Info=False;User ID=admarticles;Initial Catalog=dbarticles;Data Source=portable1_tahe\msde140405;PASSWORD=mdparticles"