工作(.net/delphi5/com+)
ccbird
这个作者很懒,什么都没留下…
展开
-
Delphi5下的事务管理问题,真是郁闷死我了。
今天写了一个COM,需要支持事务,完成一个方法以后,想测试一下事务是否有效,于是在程序中间加了一个回滚函数setAbort,再运行的时候竟然发现事务没有回滚?!想了想可能是事务上下文ObjectContext为空导致的,又插了一段代码测试了一下,果然为空。。 于是只好自己获取上下文(GetObjectContext),这次能够回滚了,不知道delphi5的事务处理究竟是怎么回事,跟踪原创 2005-01-20 17:00:00 · 888 阅读 · 0 评论 -
同样的VS2003环境,在2000下和在XP编译出来的结果不一样
最近写一个.net程序需要调用到以前的COM+,由于这个组件用到了ADO中的类,在调用它的时候.net也要生成相应的ADODB的interop代理,开始是在2000下编译的,ADO组件由于加入了全局缓存所以没有生成本地代理,这样没有任何问题。后来重装了XP,再次编译程序的时候发现interop.ADODB.dll被复制到本地了,强名称属性也变成了false(而且无法更改)? 开始也没原创 2005-01-21 14:21:00 · 1024 阅读 · 0 评论 -
ADODB._Recordset接口的问题
今天商业集团项目的消息系统又出问题了,通过分析判断是从ADODB._Recordset接口中获取数据时出现了错误。当试图直接从Recordset接口中获取字段值的时候,比如:id = rs.Field[”id”].Value.ToString(),将抛出一个NullReferenceException,提示引用为空。而且只有在商业集团和新疆油建的项目中才出现过这种错误,其中,新疆邮原创 2005-02-25 12:54:00 · 894 阅读 · 0 评论 -
SQL Sever中被零除时的容错问题
当使用这样的sql:select a/b as c from table,时,会面临被零除的危险,较为简单的解决办法是: select a/b as c from table where b 但这样会使读出的数据集比期望的少,经常会造成错误。 应该的解决方法是: select case when b=0 then NULL else a/b end as原创 2005-03-05 16:49:00 · 1292 阅读 · 1 评论