什么是ODBC[zt]

          开放数据库互连(ODBC)是Microsoft引进的一种早期数据库接口技术。它实际上是我们要在本章后面加以讨论的ADO的前身。Microsoft引进这种技术的一个主要原因是,以非语言专用的方式,提供给程序员一种访问数据库内容的简单方法。换句话说,访问DBF文件或Access Basic以得到MDB文件中的数据时,无需懂得Xbase程序设计语言。事实上,Visual C++就是这样一个程序设计平台,即Microsoft最初是以ODBC为目标的。
    你会发现,ODBC工作起来和Windows一样棗它用包含在DLL内的驱动程序完成任务。其实,ODBC提供一套两个驱动程序:一个是数据库管理器的语言,另一个为程序设计语言提供公用接口。允许Visual C++用标准的函数调用经公用接口访问数据库的内容,是这两个驱动程序的汇合点。当然,还有其它和ODBC有关的实用程序类型的DLL。例如,一个这样的DLL允许你管理ODBC数据源。ODBC的实际管理接口出现在SYSTEM文件夹中的某个CPL(控制面板)文件中棗我们在后面要谈到这方面的问题。
    ODBC的确能履行承诺,提供对数据库内容的访问,并且没有太多的问题。它没有提供数据库管理器和C之间尽可能最好的数据转换,这种情况是有的,但它多半能像广告所说的那样去工作。唯一影响ODBC前程的是,它的速度极低棗至少较早版本的产品是这样。ODBC最初面世时,一些开发者曾说,因为速度问题,ODBC永远也不会在数据库领域产生太大的影响。然而,以Microsoft的市场影响力,ODBC毫无疑问是成功了。今天,只要有两种ODBC驱动程序的一种,那么几乎每一个数据库管理器的表现都会很卓越。
     使用ODBC
    在可以用ODBC做任何事之前,必须有一个数据库棗至少在脑子里。在一个像Access这样的应用程序中创建数据库框架通常会更容易一些,因为Access可以非常轻松地提供完成任务所需的各种功能。但是,如果你至少安装了所需的ODBC驱动程序,那就可以在C++中创建程序框架。一设计了数据库,就要为其创建ODBC数据源,我们会在本节中看到这一点。下面的过程并没有严格地说明活动的经过,只是说明了一种配置数据源的技术。
    注释 我会在第5章中说明如何创建一个Access数据库。现在,我们只是看一看,为了访问那个数据库,我们下一步要做些什么。
    1. 双击Control Panel(控制面板)中的32位ODBC小程序(如果当前系统上未安装16位驱动程序,那么一些版本的Windows使用简单的ODBC小程序)。你会看到ODBC Data Source Administrator(ODBC数据源管理员)对话框,如下图所示。请注意,该对话框中当前显示的选项卡是User DSN(用户数据源名)选项卡。对系统级数据库来说,使用System DSN(系统数据源名)选项卡;对文件级数据源(从严格意义上说,它不是数据库),使用File DSN(文件数据源名)选项卡。你还会看到一个数据库的缺省选项。如果想从Visual C++内部创建数据库,就会用到这个选项。

    警告 对本地数据库来说,通常要在User DSN(用户DSN)选项卡上创建一个项;对远程数据库,则在System DSN(系统DSN)选项卡上创建。任何情况下,都不能在User DSN(用户DSN)和System DSN(系统DSN)选项卡上创建同名的项。通常会出现的问题是,你试图访问远程数据库,但从Web服务器获得了非常奇怪和矛盾的错误消息。事实上,如果在远程数据库访问期间得到了奇怪的错误消息,那么32位ODBC小程序是首先应该查看的地方之一。
    2. 单击Add按钮。会看到Create New Data Source(创建新的数据源)对话框,如下图所示。

    技巧 检查ODBC Data Source Administrator(ODBC数据源管理员)对话框的About选项卡,可以确定你正在使用的ODBC驱动程序的最新版本。这个选项卡包含了各种ODBC DLL的版本号、生产厂商的名称以及出现在SYSTEM文件夹中的文件名。大多数情况下,通过查看版本号可以验证ODBC驱动程序是否是最新的版本。
    3. 选择一个数据源。对本练习来说,我选择了Access数据源。单击Finish(完成),会看到某种类型的配置对话框,如下面的ODBC Microsoft Access 97Setup(设置)对话框所示。

    注释 如果你选择的数据源和我在本实例中选择的不同,那么所需的配置步骤也和这里说明的不同棗每个ODBC驱动程序都要求不同类型的配置。
    4. 在Data Source Name(数据源名)域内输入数据源名称。一定要选择意义明确但又不过于冗长的名称。我选择Food Database(食品数据库),因为我最终要创建一个与食品库存有关的数据库的链接。
    5. 在Description(描述)域内输入一段说明性文字。可以让这个项比上一个项稍长一些,因为它描述数据库的用途。另一方面,也不要写入像《战争与和平》那样大的小说。对本练习,我输入了:This database contains inventoryinformation for a food store(本数据库包含食品存储的库存信息)。
    6. 单击Select(选择)按钮。你会看到一个File Open-type(文件打开类型)对话框,可以在那里选择一个现有的数据库。ODBC驱动程序会自动选择正确的文件扩展名。
    技巧 并不是一定要提前设计数据库。请注意,Access ODBC驱动程序还包括一个创建新数据库的按钮。很多ODBC驱动程序都提供了这种功能,但并不是全都这样。单击这个按钮会启动数据库管理器应用程序,并允许你设计数据库。注意有一点很有意思,Access ODBC驱动程序还会允许你使用这个对话框压缩或修补数据库。
    7. 选择系统数据库选项。在大多数情况下要选择None(无),除非你为应用程序特别创建了一个系统数据库。如果确实添加了系统数据库,它会出现在ODBC Microsoft Access 97 Setup(设置)对话框的System DSN(系统DSN)选项卡上。
    8. 单击Advanced(高级)按钮,会看到Set Advanced Options(设置高级选项)对话框,如下图所示。无需对很多项做修改。但是,要把客户名添加到LoginName(注册名)域中,把客户口令添加到Password(口令)域中。这允许客户在访问你的数据库时,根本不用了解访问的细节——甚至不用了解被记录的客户名。

    技巧 为最优化潜在的区域,可以浏览一下ODBC驱动程序提供的一系列高级选项。例如,Access ODBC允许你更改DBMS所用的线程数量。缺省设置3通常提供了不错的性能,但是你会发现,复杂程序中线程多一些的话,可以提高前台任务的速度。由于Windows使用了一些处理器循环对线程实施管理,所以使用了过多的线程又会降低应用程序的速度。
    9. 设置完所需的高级选项后单击OK。
    10. 再次单击OK关闭ODBC Microsoft Access 97 Setup(设置)对话框。应该看到,新的设置项已经添加到ODBC Data Source Administrator(ODBC数据源管理员)对话框中。如果今后要为数据库更改这些设置,只要简单地加亮它并单击Configure(配置)。删除数据库配置也很容易,只要加亮DSN并单击Remove(删除)即可。

    创建系统DSN和制作用户DSN差不多。两者间一个显著的差别是,使用它们的目的不同。系统DSN告诉应用程序如何与数据库相连,在一些情况下如何与之交互作用。系统DSN不包含数据库所需的任何数据——它包含连接标准,其中可以包括从用户列表到重要文件位置的一切信息。
     文件DSN
    你可能已经注意到了,上一节中的实例有问题。如果想单独配置网络上的每一台机器,它会工作得很好,但这可能不是一个好主意。还有一种存储创建数据源所需信息的方式:文件DSN。这正是我们要在本节中讨论的。下面的过程说明了设置文件DSN的一般方法。
     1. 双击Control Panel(控制面板)中的32位ODBC小程序,会看到ODBCData Source Administrator(ODBC数据源管理员)对话框。选择File DSN(文件DSN)选项卡,会看到如下图所示的对话框。要做的第一件事是,选择存储DSN信息的地方。

   
 2. 单击Look In(观察)下拉列表框,会看到一系列当前机器的目录和驱动器。可以为DSN使用任何存储位置。我通常在网络上选择数据库存储目录。使用UNC(通用命名标准)意味着,每个人都会用相同的路径来访问DSN文件。
    技巧 Up One Level(上一级)按钮(在Look In下拉列表框旁边)的工作方式和在Explorer中是一样的。可以用该按钮返回到上一级目录。最后,你会在My Computer(我的电脑)处结束,看到机器上所有驱动器的清单。
    3. 单击Add(添加),会看到Create New Data Source(创建新的数据源)对话框。
    4. 在列表中选择一个ODBC驱动程序,然后单击Next(下一个)。对本示例来说,我再次选择Access。你会看到Create New Data Source(创建新的数据源)对话框的下一页显示出来。在这里选择数据源的名称和存储位置。单击Browse(浏览)会看到File Open-type(文件打开类型)对话框,在这里选择存储位置。输入一个文件名,ODBC向导自动添加DSN作为扩展名。在本示例中,我选择SAMPLE.DSN作为DSN文件的名称。

    5. 单击Next(下一个)会看到一个摘要对话框,如下图所示。它说明正准备创建的DSN的参数。

    6. 单击Finish(完成)。这时,会看到ODBC Microsoft Access 97 Setup(设置)对话框的修改版。不能像我们在上一节所做的那样,在Data Source Name(数据源名)或Description(描述)字段中添加信息了,不过,其它的都和以前一样。

    7. 一定要单击Select(选择)按钮输入数据库的名称,然后选择想要使用的数据库(如果想创建一个新数据库,也可以单击Create(创建))。
    8. 完成配置过程时单击OK,你会在ODBC Data Source Administrator(ODBC数据源管理员)对话框中看到一个新的DSN文件项。

    和我们创建的前一个DSN不同,这个DSN实际上创建可以用文本编辑器来查看和编辑的文件。图4.1显示了我的文件的外观。请注意,它符合标准的INI文件格式。你可以在顶端看到[ODBC]标题。下面是我选择的全部设置。这个文件允许我从Visual C++选择数据源,而机器间的传输也是非常容易的。我甚至能在安装过程中按要求更改位置——在你不知道用户会有什么样的设置时,这一点确实很不错。

     记录ODBC事务
    调试应用程序时加以记录,这一点很重要。ODBC Data Source Administrator(ODBC数据源管理员)对话框也提供了这样的功能。可以选择跟踪你通过ODBC对数据库进行的各种事务。当然,这些记录可能会变得相当大,但我们并不是总要使用它们。
    开始记录事务时,只要双击控制面板(Control Panel)中的32位ODBC小程序,打开ODBC Data Source Administrator(ODBC数据源管理员)对话框。选择Tracing(跟踪)选项卡,你会看到如下图所示的对话框(请注意,该对话框的Windows 98版本略有不同)。

    如你所见,有三个单选按钮确定何时跟踪ODBC调用。缺省设置是Don'tTrace(不跟踪)。如果打算调试单个应用程序,应该选择All the Time(全部时间)。One-Time Only(只一次)在下一次连接期间跟踪ODBC调用棗只要连接一拆除,跟踪就关闭。当用户带着特定的问题调用时,这是一个不错的选择。可以监视一次会话期间的连接,然后用该信息帮助创建排除错误的计划。
    跟踪不会自动开始。还要单击对话框右侧的Start Tracing Now(现在开始跟踪)。只要跟踪一开始,按钮标题就变成Stop Tracing Now(现在停止跟踪)。再次单击按钮关闭跟踪过程。
    唯一要担心的其它设置是Log File Path(记录文件路径)。ODBC通常在根目录下的SQL.LOG文件中放入事务信息。但是,也可以将该信息放在网络驱动器上,或者用户看不到的地方。在调试过程中,缺省位置通常就比较适宜。
    注释 除非你想创建自己的日志记录DLL,否则不要更改Custom Trace DLL(自定义跟踪DLL)域内的设置。在这里列出的DLL棗ODBCTRAC.DLL棗负责维持事务记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值