dbExpress 4的效率提昇

在前一陣子的Delphi 2007發表會中我提到了dbExpress 4是一個非常大的進步版本,它使用了全新的架構,目的是為了讓Delphi的開發人員自此之後能夠使用一套原始程式開發同時能夠在Win32/.NET以及未來的Win64平台之中而無需修改應用程式。

我相信對於使用Delphi開發資料庫應用程式的人來說dbExpress 4應該是受歡迎而且值得使用的,因為這可以在可見的未來避免不時需要更換資料庫存取引擎而導致需要大幅重寫應用程式,例如從BDEdbExpress,或是從BDEADO.NET/BDP.NET

當然,更換資料庫存取引擎考慮的因素很多,例如可使用的年限,功能,支援的平台和資料庫種類,以及執行效率等。DbExpress 4在使用的年限,功能,支援的平台和資料庫種類等都非常的令人滿意,因此執行效率可能就是許多人關心的。在Delphi 2007發表會中我提到了dbExpress 4Win32/Win64平台提供了連結池(Connection Pool)等的高等功能,終於讓Win32/Win64的原生應用程式可以享受.NET平台才有的高階服務。

不過我在Delphi 2007發表會中並沒有機會展示dbExpress 4提供的效率優勢。要知道如何從以前的dbExpress版本享受dbExpress 4新的功能,先讓我們觀察以前版本的dbExpress連結組態。下圖是我使用BDS 2006中的dbExpress組態對話盒,各位可以看到在舊的dbExpress中只有對每一種資料庫

在前一陣子的Delphi 2007發表會中我提到了dbExpress 4是一個非常大的進步版本,它使用了全新的架構,目的是為了讓Delphi的開發人員自此之後能夠使用一套原始程式開發同時能夠在Win32/.NET以及未來的Win64平台之中而無需修改應用程式。

我相信對於使用Delphi開發資料庫應用程式的人來說dbExpress 4應該是受歡迎而且值得使用的,因為這可以在可見的未來避免不時需要更換資料庫存取引擎而導致需要大幅重寫應用程式,例如從BDEdbExpress,或是從BDEADO.NET/BDP.NET

當然,更換資料庫存取引擎考慮的因素很多,例如可使用的年限,功能,支援的平台和資料庫種類,以及執行效率等。DbExpress 4在使用的年限,功能,支援的平台和資料庫種類等都非常的令人滿意,因此執行效率可能就是許多人關心的。在Delphi 2007發表會中我提到了dbExpress 4Win32/Win64平台提供了連結池(Connection Pool)等的高等功能,終於讓Win32/Win64的原生應用程式可以享受.NET平台才有的高階服務。

不過我在Delphi 2007發表會中並沒有機會展示dbExpress 4提供的效率優勢。要知道如何從以前的dbExpress版本享受dbExpress 4新的功能,先讓我們觀察以前版本的dbExpress連結組態。下圖是我使用BDS 2006中的dbExpress組態對話盒,各位可以看到在舊的dbExpress中只有對每一種資料庫建立的連結:

下圖則是新的dbExpress 4 dbExpress組態對話盒,我們可以看到在dbExpress 4中有了數個新的連結設定,其中和連結池相關的就是DBXPOOLCONNECTION,這就是我們需要使用的。

 

 

因此要在dbExpress 4中為各種資料庫連結開啟連結池的功能,我們只需要藉由使用dbExpress 4中新的Delegate驅動程式,也就是說讓原本使用的dbExpress資料庫驅動程式再連結到通用的DBXPOOLCONNECTION驅動程式,就立刻可以在原本的dbExpress驅動程式中加入連結池的功能。這也就是說開發人員只要在原本的dbxconnectoins.ini中,找到建立的資料庫連結,例如我有一個連結到InterBase 2007的連結組態IBDEMODB,如下所示:

[IBDEMODB]

DriverName=INTERBASE

DRIVERUNIT=DBXDynalink

DRIVERPACKAGELOADER=TDBXDynalinkDriverLoader

DRIVERPACKAGE=DBXCommonDriver110.bpl

DRIVERASSEMBLYLOADER=Borland.Data.TDBXDynalinkDriverLoader

DRIVERASSEMBLY=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f

GETDRIVERFUNC=getSQLDriverINTERBASE

DATABASE=localhost:E:LWSeriesBooksD2006DBProgrammingDatasd7Books.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

 

現在我只需要在這個IBDEMODB的連結組態中再加入如下的設定即可:

DelegateConnection=DBXPOOLCONNECTION

完成了這個設定之後,讓我們看看使用DBXPOOLCONNECTION連結池的效果。

2圖是一個相同的資料庫應用程式同時使用dbExpress 3以及dbExpress 4和連結池建立和InterBase連結的執行結果:

 

各位可以看到開啟連結池的驚人效率,特別是當各位使用dbExpress開發主從架構應用程式而且擁有大量的用戶端使用者時,更可以感受到dbExpress 4帶來的執行效率增加。對於舊的dbExpress應用程式來說,只需要執行下列的步驟,並且使用Delphi 2007重新編譯之後您的dbExpress應用程式在連結資料庫時就會執行得更快了。

設定dbxconnections.ini中的dbExpress資料庫連結

增加DelegateConnection = DBXPOOLCONNECTION

刪除舊的TSQLConnection元件,使用新的dbExpress 4TSQLConnection元件

或是修改舊的TSQLConnection元件的LibrarynName特性值為新的dbExpress 4使用的函式庫,例如InterBasedbxint30.dllMSSQLdbxint30.dll。請參考dbExpress 4的文件說明。

 

Cheer!

 

 

 

 

廣告
  1. #1 by 红宾(琴心剑胆) on 2007 年 05 月 17 日 - 16:16:33

    我使用delphi已经5年了,从d7以后到d2006的4个版本我都建议公司买了,用以支持borland,delphi2007的试用版我下载了,我觉得无论功能和稳定性及效率都非常好,但一个最大的缺点,就是ide基于.net sdk,太烦了,难道不能象php一样基于delphi7开发的ide吗?这样既轻量,速度又快.我相信绝大多数程序员都有我这样的共识.

  2. #2 by bm on 2007 年 05 月 18 日 - 09:56:41

    新开始的项目都开始写dbExpress的函数版本了,不过原先ADO的还是要维持,用的太多了,一时半时改不过来.对楼上的有同感,不过我们自己系统的帮助系统采用分离数据库方式.觉得IDE实际也可以用这种灵活的方式.

  3. #3 by bm on 2007 年 05 月 18 日 - 12:35:04

    另外很大一个问题是大量牵涉到Access的没法用dbExpress.大量函数是对Access mssql db2 oracle 通用的,函数内部case 处理.现在问题是dbExpress不能连接Access,则每次都需要写两个版本的程序.毕竟相当多的客户端数据处理用桌面数据库是最好的.特别是给用户演示时.

  4. #4 by wise on 2007 年 05 月 19 日 - 02:42:44

    再次说明下这个情况,一直无心使用D2007
     
    一个FORM上放个DBGRID,DBGRID上面放了很多个DataSource类的非可视控件,点击DBGRID,点中那一刻,DBGRID会移到最前面,挡住了所有的非可视控件,这样看上去很闪,一天到晚,程序员很累,

  5. #5 by lzf1010 on 2007 年 05 月 19 日 - 04:23:45

    我试过wise说的操作方式,好像没有出现这样的情况哦

  6. #6 by wise on 2007 年 05 月 19 日 - 08:21:51

    我再解释下我的意思,我也用D2007几天,总的感觉D2007总是闪闪的感觉,
    你可以这样测试,在点击选中DBGRID的时候,左键按下后,不要马上松开,你就可以看到所有的非可视控件到DBGRID的后面去,你再松开鼠标,DBGRID又到所有非可视控件的后面了, 虽然我们点击选中一个控件单击的时候很快,但总有一个闪的感觉,
     
    还有种情况,放个SHAPE,在SHAPE上面放很多BUTTON,LABEL,我想大家都这样做个FORM吧,点击SHAPE的时候,SHAPE会移到最前,挡住SHAPE上面所有的控件
     
     
     

  7. #7 by wise on 2007 年 05 月 19 日 - 08:24:29

    我的D2007过期了,如果大家不会出现我的情况,可能DBGRID的align 设成 alClient 再看效果,

  8. #8 by 首領 on 2007 年 05 月 25 日 - 02:37:21

    剛剛來到你的spaces…所以留言了……因為我的名字只差一個字啊!!!哈……..我比你最後多一個 "良" 字……高興來到你這裡……有空我會常來的……. 

  9. #9 by JIN CHEN on 2007 年 06 月 14 日 - 07:20:56

    不知道Delphi 2007 for Win32對Unicode支援度是否有改善,還有使用dbExpress 4是否真的延續性夠,目前還是習慣使用ado方式,但是對Unicode部份,相當頭痛!

  10. #10 by on 2007 年 06 月 14 日 - 07:36:23

    >不知道Delphi 2007 for Win32對Unicode支援度是否有改善,還有使用dbExpress 4是否真的延續性夠,目前還是習慣使用ado方式,但是對Unicode部份,相當頭痛!當然, CodeGear現在和日後在Win32/.NET/Win64上的資料存取技術都將使用DBX4架構.

  11. #11 by sky on 2007 年 12 月 16 日 - 02:23:58

    请问Corelab的DBExpress和CodeGear的DELPHI2007自带的DBExpress有什么区别?
    是否可以在Delphi7中使用DBExpress4呢?

  12. #12 by Unknown on 2008 年 03 月 22 日 - 18:14:05

    wow gold wow gold wow gold wow gold wow gold wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow gold wow gold Rolex Rolex Replica Replica Rolex replica watch replica watches rolex watch rolex Replica Rolex Rolex Replica rolex changyongkuivip

  13. #13 by Unknown on 2008 年 07 月 01 日 - 05:53:19

    能留下您的QQ号码不,现在开始对dbx4 吹嘘的功能好强大,感到很失望,还当不到别人三方出的DBX驱动,悲呀呀 ;dbxsda.exe 这个是一个三方驱动, 能解决所用问题.不知道DBX4什么时候才能不让开发人员对他失望;很多想尝试用DBX做开发的,在用的时候发现,他居然连重存储过程中返回的数据集合都不支持的时候,很多老D程序员就对他没的信心了.可悲呀.一个大公司做到这个地步,怎么不出现问题,怎么不有倒闭的可能.

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

%d 位部落客按了讚: