知识大全 在Delphi中如何维护COM+的状态信息[2]

Posted 状态

篇首语:世事洞明皆学问,人情练达即文章。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 在Delphi中如何维护COM+的状态信息[2]相关的知识,希望对你有一定的参考价值。

在Delphi中如何维护COM+的状态信息[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  回到+的工程 调试它 在ConnectTo和adocBeforeConnect中设置断点 发现程序执行到

  DBName:=sDBName;

  时 确实已经把DBName的值设为 DB 了 但是在执行

   adoc ConnectionString:=ConnectStringA+´Initial Catalog=´+DBName+´;´+ConnectStringC;

  时 DBName又成了空字符串 所以出错了

  为什么DBName的值会丢掉呢?原来在是因为在ConnectTo中 调用了SetComplete方法 SetComplete方法认为这个+已经完成了任务 会释放这个+对象 所以连接数据库时 又创建了一个新的+ 它的DBName当然是空值了

  找到了原因 把SetComplete改成EnableCommit; 编译 再运行客户端 终于运行成功 取回了DB 数据库中的数据

  可是在客户端程序中 放入另一个ClientDataSet 在打开ClientDataSet 之后 打开ClientDataSet 想继续访问DB 中的数据 又报错了 把程序改成

  Dconnection AppServer connect(´DB ´);

  ClientDataset Active:=true;

  ClientDataset Active:=false;

  ClientDataset Active:=true;

   即使只使用一个ClientDataSet 在它关闭之后 再打开时 依然会出错

但如果客户端写成

   Dconnection AppServer connect(´DB ´);

  ClientDataset Active:=true;

  Dconnection AppServer connect(´DB ´);

  ClientDataset Active:=true;

  可以执行成功 但这样似乎很不好看 +为什么会在连接完数据库后又把自己释放呢?

  原来 TmtsDataModule有一个AutoComplete属性 默认值是true 所以在连接完数据库之后 它还是会把自己释放

  把AutoComlete设成false后 还是出错 在+的OnActivate事件中跟踪发现 当它被激活时 AutoComplete属性被自动设为ture了 所以在它第一次连接数据库后 依然会把自己释放

  在+的OnOnActivate事件中 写上

  AutoComplete:=false;

  客户端一次连接 多次访问数据库也没有问题了

  但这样一来 +就不会自动释放了 需要在+中增加一个方法 在这个方法中SetComplete 然后在客户端用完+后 调用这个方法来释放+

  经过以上的摸索 得出以下的结论 在+中 如果要保持状态信息 需要做一些工作 因为+默认是无状态的 它每次被客户端调用后 都会判断是不是应该释放自己 如果我们不想它释放 就要人工加以干预 最后我们还要人工去释放它

cha138/Article/program/Delphi/201311/24838

相关参考

知识大全 用DELPHI在状态栏中显示进程条[2]

用DELPHI在状态栏中显示进程条[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  上面的步

知识大全 职员信息维护功能的实现(一)[2]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang

知识大全 职员信息维护功能的实现(二)[2]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang

知识大全 用DELPHI在状态栏中显示进程条[1]

用DELPHI在状态栏中显示进程条[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!经常上网的朋

知识大全 职员信息维护功能的实现(一)[1]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang

知识大全 职员信息维护功能的实现(二)[3]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang

知识大全 职员信息维护功能的实现(二)[1]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang

知识大全 Delphi中用API实现在MSN的信息提示

Delphi中用API实现在MSN的信息提示  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我是

知识大全 使用Delphi获取系列信息

使用Delphi获取系列信息  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Delphi以其优良的可

知识大全 在Delphi中建立和使用别名[2]

在Delphi中建立和使用别名[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  建立使用IN