首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

1.5  dbExpress驱动程序的设定

1.2节中已经介绍了TSQLConnection控件使用的连接信息的内容来自于dbxconnections.ini文件。当开发人员使用TSQLConnection建立一个定制的数据库连接时,例如前面建立的CHINESEDEMO连接,TSQLConnection控件便在dbxconnections.ini文件中写入此定制连接的信息。事实上,dbExpress的连接信息是由两个配置文件(configuration file)定义的(见表1-3)。

1-3

配置文件名称

功能说明

dbxconnections.ini

储存Delphi内置的数据库连接信息以及开发人员定义的定制连接信息

dbxdrivers.ini

储存dbExpress支持的物理数据库连接信息。例如dbExpress数据库驱动程序访问函数名称、用户名称、密码,使用的Transaction层级,数据库服务器名称以及数据库名称等,属于每一个数据库特定的信息

这两个文件位于BDS\4.0\dbExpress目录之下,其中dbxdrivers.ini文件所定义的是每一个特定数据库使用的连接信息。而当开发人员在TSQLConnection中建立新的数据库连接信息时,TSQLConnection会到dbxdrivers.ini文件中找到此特定数据库的连接信息作为定制连接信息的模板(template),再由开发人员修改其中特定的数值,例如用户登录名称和密码等。因此,我们可以说,dbxdrivers.ini提供了每一个dbExpress支持的数据库的模板信息。

在开发人员建立了定制的数据库连接之后,TSQLConnection首先会从dbxdrivers.ini中拷贝用户使用的数据库模板信息,接着结合用户针对此数据库连接输入的实际连接信息,再于dbxconnections.ini文件中写入此连接信息以便让dbExpress驱动程序在实际连接时作为连接信息之用。例如前面建立的CHINESEDEMO,我们在dbxconnections.ini中便储存了如下信息:

[CHINESEDEMO]

DriverName=INTERBASE

GETDRIVERFUNC=getSQLDriverINTERBASE

DATABASE=localhost:F:/My Books/dbExpress 2006/D2006HPDBP/Data/ChineseDemo.gdb

ROLENAME=RoleName

USER_NAME=sysdba

PASSWORD=masterkey

SERVERCHARSET=GB_2312

SQLDIALECT=3

BLOBSIZE=-1

COMMITRETAIN=False

WAITONLOCKS=True

ERRORRESOURCEFILE=

LOCALECODE=0000

INTERBASE TRANSISOLATION=ReadCommited

TRIM CHAR=False

HostName=localhost

上面的连接信息清楚地标明了CHINESEDEMO是连接到InterBase数据库的定制连接,因此,当dbExpress应用程序启动时,此参数选项便会在dbxdrivers.ini中查寻InterBasedbExpress驱动程序细节。而在dbxdrivers.ini中则有如下信息:

[Interbase]

GetDriverFunc=getSQLDriverINTERBASE

LibraryName=dbxint30.dll

VendorLib=gds32.dll

Database=database.gdb

RoleName=RoleName

User_Name=sysdba

Password=masterkey

ServerCharSet=

SQLDialect=3

BlobSize=-1

CommitRetain=False

WaitOnLocks=True

ErrorResourceFile=

LocaleCode=0000

Interbase TransIsolation=ReadCommited

Trim Char=False

从上面的信息中可以看到,对Interbase的连接:dbExpress需要加载dbxint30.dll这个DLL文件,而且dbxint30.dll函数库的进入点是getSQLDriverINTERBASE函数,而dbExpress在使用LoadLibrary加载dbxint30.dll之后,就可以使用GetProcAddress取得getSQLDriverINTERBASE函数的地址,调用getSQLDriverINTERBASE就可以取得dbExpressISQLConnection接口,接着就可以连接到InterBase数据库了,在本书第13章会介绍dbExpress的实现原理,读者可以参考其中的内容。而dbxint30.dll则调用了InterBase安装在客户端的API GDS32.DLL函数库来真正地和InterBase连接互动。

对于所有支持Delphi 2006的数据库,这些信息都出现在dbxdrivers.ini文件的最前面,例如在Delphi 2006dbxdrivers.ini中有如下信息:

[Installed Drivers]

 

DB2=1

Interbase=1

MySQL=1

Oracle=1

Informix=1

MSSQL=1

ASA=1

ASE=1

8个数据库的旗帜都设定为1,因此,这8个数据库连接信息就是我们在图1-29中看到的dbExpress支持的8个数据库。

1-29  dbxconnections.ini支持的数据库会出现在Add New Connection对话框中

最后我们打开TSQLConnectionView Driver Settings对话框,就可以清楚地看到每一个dbExpress驱动程序使用的特定的数据库厂商的函数库。例如从图1-30中我们可以确定Delphi 2006MS SQL Server驱动程序是直接使用OLEDB来连接的,而不是使用ADO

 

1-30  TSQLConnectionView Driver Settings中可以看到各dbExpress驱动程序使用的底部厂商驱动程序,例如MS SQL Server是使用OLEDB连接MS SQL Server数据库的

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论