一个程序连接数据库中间就需要有一个数据库连接引擎
笔者在使用delphi的过程中,共使用过几种连接方式连接access,sqlserver,oracle,ibm udb,ibm as/400...
1.bde
这是使用delphi最多的一种方式,建立一个bde别名可以在控制面板中的bde administration中添加,不过我习惯在sql explorer中建立,因为建立之后直接可以执行建表的脚本了。
你可以在sql explorer中左边的别名列表中点击右键,并选择要连接的数据库种类,并在之后bde建立的连接参数中填入必要的信息,注意,当你选择不同的数据库时,右边的参数有少许的不同,这些参数的不同是由于不同数据库所要求的参数不同造成的,例如sqlserver需要输入服务器的名称,数据库的名称。
bde能够连接我所使用过的所有的数据库,当然有些是通过odbc来连接的。
在发布程序时,必须发布bde引擎。用installshield express可以很方便的做这件事情
bde的别名也可以在delphi程序中动态的检查有无并建立之。我通常用tsession组件来do it。
2.odbc
这是ms的产品。
如果你在odbc中建立了一个dsn连接,那么你的delphi程序还是需要使用bde来连接它,但是此时不需要用上一步中的手动建立别名,bde会将odbc中的所有别名自动在bde中建立相同名称的别名,并且它是删不掉的,除非你删掉odbc的dsn。
这种方式的实际是程序通过bde,再通过odbc,才连接到数据库。
在早期使用aceess时,我通常使用这种方式。因为那时候还没有ado。
同样在使用ibm udb时,我也用这种方式,因为在使用bde直接连接时,在sql explorer中将不能枚举数据库中的表,而odbc可以。
as/400也可以使用这种方式来连接...
大型关系型数据库都提供odbc驱动。在建立odbc源时,都会调用其本身的配置,不同的数据库也是不同的。
odbc源也可以在程序用代码写入注册表中,来生成一个dsn.
3.ado
这是odbc的升级版本,通常也叫做mdac ,我用过的最新版本是2.7,现在应该更高。在使用ms的数据库sqlserver,access时,推荐使用这个东西,因为他从win98开始就集成在操作系统中,并且以连接字符串的形式提供所有参数,发布系统时不需要在程序之外做其他的工作。
它也提供包括一些类数据库的连接,例如excel。
值得一提的是在连接有密码的access时,delphi的ado向导生成的连接字符传是有bug的,其生成的password子项是password='xxx';这个样子,但是这将不能连接,手动将其改成jet oledb password='xxx';(好像是这样,记不清了).
4.dbexpress
这是borland提供的最新的数据库引擎,目前提供的驱动有限,我只用它成功测试过ibm udb,在网上可以找到第3方的连接as/400的驱动。
它是一个提供单向游标的引擎,borland称相对于bde,具有更高的效率。并且在以后将发展它,而停止bde的更新。
通常在使用这种方式时,应该用datasnap(以前叫midas)技术来提供双向游标的应用,并且用tclientdataset的data,delta属性来灵活的序列化dataset,而实现多层松耦合系统。
5.第3方的驱动
这些我一个都没在实际 中使用过,通常以组件的形式提供,我所知的如连接oracle的odac,连接as/400的delphi400。。。
最后现在如果可能,应尽量使用ado来连接系统,并且用datasnap来操作本地数据集来实现多层系统。