开发工具delphi7 U1.1
db:oracle 10.2.0.0.1
开发环境 xp sp2
技术参考 李维 ADO MTS COM+的那本书
李维的书中有些bug(delphi本身也有些问题),我只拥有其书的电子版(好像和原版有出入,但是市场上已经买不到书了 )
从网上看大家开发用以上技术开发三层数据库系统的过程中遇到了很多的问题,而且有知道解决方案的不多。borland的实力不济啊,但是有谁能告诉我还有什么更好的工具呢,似乎又没有。
驱动问题
刚开始的时候使用了ms ole db for oracle 做为数据库的驱动,后来发现 更新数据的时候会有很多事务方面的问题 。
midas 出生于 com+之前,本身有很多问题。如果是不稳定,那就完蛋了。
后来使用了 oracle提供的 oracle provider for ole db驱动 问题解决了。又是驱动,记的在用java开发东西的时候也出现过jdbc驱动问题而造成的错误,驱动看来是我今生的冤家,以后做系统遇到奇怪问题首先应该想到它了。
主从表问题
李维 的delphi 5.x 分布式,系统篇 中 关于 Main/Detail的例子(好像在2-35)也有问题,从表的dataset的commandtext需要加参数,否则主表第一条记录对应的detail会是 detail表中的所有记录,加了参数就好了。
客户端我采用的两组 clientdataset 和datasource,设计是加入个dcomconnect ,编辑好两个clientdataset的fields ,设计结束后删除这个dcomconnect, 运行是主表的clientdataset.data 从 com+的DatasetProvider中获取就可以了。更新是将主表的clientdataset.delta 作为参数传给com+,由com+中的DatasetProvider执行applyupdate就可以了。写的比较简单。其实com+包括了两个东西,就像李维书中写的那样,一个协调对象和一个数据库链接和更新的 com+
2007-6-19
更新的时候事务不稳定,错误现象也不确定。
现在怀疑的地方有
1、oracle数据库可能对MTS进行一些配置
2、主从表时,有问题,如果这样启用主从表,特别是更新的时候。
3、comobj.pas provider.pas 修改有问题,或者编译时没有用修改过的文件。
不能在拖下去了。尽快稳定一次修改一张表的方法。
连这个blog都有bug(修改时,原tag没有带出),唉!!!!!!!!!!!!!!!!!
2007-6-20
今天将开发机上 的oracle 10g client卸载后安装了个 oracle EXPRESS 10g(把他当客户机用 ),居然就没有事务错误了。看来还是驱动问题 。奇怪的是oracle同一批次的不同产品居然提供的驱动也不一样 。
但是是不是能真实解决问题还不确定 ,
先前报错 新事务不能登记到指定的事务处理器中(Failed to Enlist on Calling Object's Transaction)微软有相应的文章!
http://support.microsoft.com/kb/191168/EN-US/