说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关于VC中使用ADO进行事务处理BeginTrans()的问题,很奇怪。(内有代码,非常疑惑!求助)

编辑:说三道四文库 发布时间:2017-11-21 02:58
HTML文档下载 WORD文档下载 PDF文档下载
在VC中使用ADO 2.6的版本进行事务处理的时候,结果出现如下情况:
不管是提交事务也好,还是回滚事务也好,在事务中对数据表的处理结果都发生了改变。  然而。同样的流程,在VB程序中就不存在问题,具体代码如下:
 
         m_pRecordset->LockType = adLockOptimistic;
m_pRecordset->CursorType = adOpenDynamic;
m_pRecordset->CursorLocation = adUseServer;


m_pRecordset->Open(strSource, source, adOpenDynamic,
adLockOptimistic, adCmdText);

m_pConnection->BeginTrans();

for(i =1; i<=5; i++)
{
str.Format("%d", i);
m_pRecordset->AddNew();

vIndex = (short)0;
m_pRecordset->PutCollect(&vIndex, _variant_t(str 
                                                              + "_YOU"));

vIndex = (short)1;
m_pRecordset->PutCollect(&vIndex, _variant_t(str 
                                                               + "_I"));

vIndex = (short)2;
m_pRecordset->PutCollect(&vIndex, _variant_t(str 
                                                               + "_HE"));

m_pRecordset->Update();
}

if(MessageBox("是否完成修改?", NULL, MB_ICONQUESTION | MB_YESNO)
== IDYES)
{
m_pConnection->CommitTrans();
}
else
{
m_pConnection->RollbackTrans();
}
代码执行完毕后,如果执行RollbackTrans(),数据库的Update操作并没有被取消,而是将数据添加进了数据库中。  同样的流程,在VB代码中就没有问题,如下:
    cnn.ConnectionString = Adodc1.ConnectionString
    cnn.CursorLocation = adUseServer
    cnn.Open
    
    Set comm.ActiveConnection = cnn
    comm.CommandText = "select * from uCoursesTeacher"
    comm.CommandType = adCmdText
    
    Set rs = comm.Execute
    rs.Close
    rs.LockType = adLockOptimistic
    rs.Open

    cnn.BeginTrans
    
    'rs.MoveFirst
    Dim i As Integer
    For i = 1 To 5
        rs.AddNew
        rs(0) = i & "_YOU"
        rs(1) = i & "_I"
        rs(2) = i & "_He"
        rs.Update
    Next i
   
    If vbYes = MsgBox("是否保存修改?", vbYesNo + vbQuestion) Then
           cnn.CommitTrans
    Else
        cnn.RollbackTrans
    End If
    
这个问题使得我很困惑,希望能得到高手的指点。
程序编写的环境是VC 6.0 + SP5  + Win2k server

谢谢。
你对Connection对象的属性做了必要的设置没?
connection对象需要那些必要的设置呀?
我的connection对象在初始化的时候设置如下:
  hr = m_pConnection.CreateInstance(_uuidof(Connection));
  if(SUCCEEDED(hr))
  {
m_pConnection->CursorLocation = adUseServer;
hr = m_pConnection->Open(strConn, "", "", 
                                        adConnectUnspecified);
   }
仅仅把CursorLocation设置为了adUseServer。 还需要进行其他的设置吗??
今天看来我运气不好,这么久都没有人给出正确的解答。
我VC水平有限,不过既然在VB里面同样的流程能够实现预期的效果,那么为何在VC里面居然不行呢?
我非常困惑,真的希望高手能给出解答。

难道是我对COM\OLE的环境初始化除错吗?但是其他的ADO语句照样执行正确呀。

迫切希望高手的指点,谢谢。
谢谢诸位,我自己搞定了。
在Open一个Recordset的时候,不能传递字符串进去,而是用Connection对象的指针作为
Open的第二个参数,即可实现事务。

这个帖子只有一个兄弟关注,我该如何给分呢?

自己解决了问题,给自己分数行吗?呵呵
$(fn) -JQuery API $(html) -JQuery API $.extend(prop) -JQuery API $.noConflict() -JQuery API each(fn)-JQuery API eq(pos)-JQuery API get(num)-JQuery API get()-JQuery API gt(pos)-JQuery API index(subject)-JQuery API length-JQuery API lt(pos)-JQuery API size()-JQuery API CSS-JQuery API css(key, value)-JQuery API css(name)-JQuery API css(properties)-JQuery API height(val) -JQuery API height()-JQuery API width(val)-JQuery API width()-JQuery API DOM-JQuery API addClass(class)-JQuery API attr(key,fn)-JQuery API attr(key, value) -JQuery API attr(name)-JQuery API attr(properties) -JQuery API html(val)-JQuery API html()-JQuery API removeAttr(name)-JQuery API removeClass(class)-JQuery API 我的程序是ADO+access2000,请问我用什么做报表好呢? 关于ListView的操作问题 我又问题了,关于随机函数 怎样用ASP获取客户端机器名,用户名和ip ********请大虾看过来!******** 如何转换用户? 高分求救! 怎么把int型的birth当成字符型用了?? CSS问题 “网交控”能轻松帮助您的企业和单位最方便的控制和最高效的使用网络资源(介绍篇,顶者有分) struts的基本问题!500错误 怎样学习powerbulder? 奇怪的问题:在borderlayout中为什么不能同时显示多个组件?? 小数点的问题 谁能告诉我javascript调用应用程序时如何传递参数的。程序在里面。100分相赠 做测试做的真郁闷,我应该怎么办? 工资和学历是否是正比 大家都来测-- error cs0234:类型或命名空间名称“Xml”在类或命名空间“System”中不存在. 求解,为什么出错? 今天很不爽,散分了 什么是对象库,如何共享窗体、对话框? javascript的超级恶心问题!(急!!!!!!!在线等!!!!!!) 关于WINISO的问题! 今天很不爽,散分了,名字带狼的都有分 哪里有关于Oracle的电子书? 老问题:组件的注册问题 求最精彩的算法 下载出问题了,大家快来救呀 如何下载 .rt 文件 ??? 今天很不爽,散分了,名字带狼的都有分 奇怪问题,在线等待求救!!! 今天很不爽,散分了,名字带狼的都有分 如何设计能够处理动态字段的数据库(最好Paradox) 任何字体修饰都不起作用,为什么 怎样取得服务器IP地址? 谁有ERP详细设计书、数据字典。重谢 “网交控”能轻松帮助您的企业和单位最方便的控制和最高效的使用网络资源(介绍篇,顶者有分) 将query的数据倒入excel该如何处理 更新问题 找不到字段名 在线等 如果我要加入团队开发,那应该安装哪个ORACLE8i的产品?在线等 这一句错在哪里? [求助]关于多线程同时读写SOCKET 庆祝!经过公平选拔公司聘我配置管理经理! 送分!!!!!!!! 我想在DataSourceDataChange中写代码,来判断当某一字段的值输入为1时,我想让另一个字段显示! 怎样获取本机上网的DNS地址? 如何实现用JS实现首页调用 ! 请教各位大侠广告系统应怎么运作和推广?100分。附系统说明 IE不能运行JavaScript\vbScript,怎么解决这个问题? sql server ce 数据库压缩问题 我要从光盘拷贝文件出来,还有怎么获得光盘的大小等参数,谢谢。 Nous avons un jour de repos par semaine是什么意思呀 求想象之中歌曲链接? 用然组词填入句子中不多不多,就一个我国建成的三峡大坝堤坝牢固,任由再疯狂的洪水侵袭,它也()不动 已出版的论文在哪里可以查 玉米套种什么产值高 论文出版地怎么查内蒙古羊绒业的开发研究作者:杨娜保存单位:中央民族大学出版年份:2011出版地:无请问:怎么写参考文献啊 到哪里查论文的出版地呢 1.当为何值时,方程组2x+3y=2k+1有正整数解?3x-2y=0 2.△ABC的三边a,b,c均为整数,且a+b+c=30,a<b<c满足条件的三角形有多少个? 王权与相权历代君王是如何一步步削弱相权的,比如秦始皇,汉武帝,唐朝,宋朝,明朝,清朝 ① (-2a-b)^2-(3a-2b)^2② (-1/3t+3)^2+2(1/3t+2)^2③ (3a^2+5)(-3a^2+5)-a^2(7a+4)(7a-4)-16a^2④ (x+2y-m)(x+m+2y)⑤ ( a-1/2)^2(a^2+1/4)^2(a+1/2)^2先化简,再求值:①(a+b)(a-b)^2-2a^2 .其中a=3,b=1/3②(3x+2)(3x-2)-5x(x-1)- 急,明天就交!已知一个二元一次方程的两组解分别是X=4,Y=4和X=5,Y=2试求这个方程. The biggest failure of life is arrogance.The biggest ignorance of life is cheating. 南京警方将二维码技术用于自行车防盗(南京:乘客坐地铁出意外可获保险理赔KTV普通酒水要价888元 南京便衣上海市委书记强调:民生政策一定要体现广西一米粉店夫妇被枪击一死一伤 行凶日本政界认为安倍或于12月26日前参韩媒称朝军需设施火灾爆炸连发 不排除美国纽约城市马拉松将开赛 安全预算比百度走进武汉大学 鼓励大学生互联网安四川中巴强冲法院两民警受伤 嫌疑人已巴西青年示威游行演变为骚乱 一人受伤英高校投建无人机实验室 先进程度全球日本科学家通过残忍实验发明“透明老鼠英医院安排临终老妪与爱马病榻前作最后拉脱维亚外长宣布“出柜”泰国年度变性人选美大赛 委内瑞拉“姑墨西哥43名失踪学生已被屠杀焚尸 失白宫午餐会爆口水仗 奥巴马对共和党领英国成功说服欧盟 预算“摊派”减半一巧克力公司与“伊斯兰国”英文缩写相越南“最性感酒店客房”诠释“面朝大海巴西研究人员解剖证实:女性鼻子比男性
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘