关于WebService中数据库事务的奇怪问题,请高手帮忙解决

问题描述

问题:用WebService实现了一个方法,同时向表A、B插入记录,并启动了事务,调试该方法时当执行向A表中插入了记录语句后终止调试(即:退出程序),发现已经向A表插入数据成功,而程序并没有执行Commit和rollback方法,当将同样的代码拷贝到Windows桌面程序中调式时,如果不执行Commit方法而终止程序执行并不会插入记录成功,如果是这样我的应用程序突然断电,岂不是不能保证数据的完整性,代码如下:[WebMethod]publicvoidTestConnection(){SqlConnectioncnn=newSqlConnection("server=localhost;packetsize=4096;userid=sa;datasource=localhost;persistsecurityinfo=True;initialcatalog=DEMO;password=;ConnectionReset=FALSE;Pooling=FALSE;");SqlTransactiontran=null;try{cnn.Open();tran=cnn.BeginTransaction(System.Data.IsolationLevel.ReadCommitted);SqlCommandcmm=newSqlCommand("INSERTINTOCOMTESTVALUES('A','B','C','D','E')",cnn);cmm.Transaction=tran;cmm.ExecuteNonQuery();//当在WebService下调试到上一句立即终止程序执行,数据库成功插入一笔记录,而在WindowsApplication下调试时则不会插入上一笔记录,因为没有执行commit方法,我希望在WebService下也能达到这个效果,保证应用服务器出现故障也能保证事务的完整性cmm=newSqlCommand("INSERTINTOCOMTESTVALUES('B','B','C','D','E')",cnn);tran.Commit();}catch(System.Exceptionerr){tran.Rollback();cnn.Close();}}

解决方案

解决方案二:
个人感觉最好在数据库中设计和执行事务。
解决方案三:
考虑跨数据库问题,系统没有用到存储过程,只有将事务放在程序中实现了,请各位高手帮忙分析原因!
解决方案四:
难道这个问题没人知道原因吗?各位兄弟姐妹们帮帮忙看看如何解决,谢谢各位了!
解决方案五:
顶一下,难道没人知道这个问题的原因吗?高手快出来支招,多谢了
解决方案六:
不太清楚Webservice在调试时是否去启动了事务,可以在Webservice中人为的throw一个错误,然後正常去调Webservice,看是否能插入数据成功。[WebMethod]publicvoidTestConnection(){SqlConnectioncnn=newSqlConnection("server=localhost;packetsize=4096;userid=sa;datasource=localhost;persistsecurityinfo=True;initialcatalog=DEMO;password=;ConnectionReset=FALSE;Pooling=FALSE;");SqlTransactiontran=null;try{cnn.Open();tran=cnn.BeginTransaction(System.Data.IsolationLevel.ReadCommitted);SqlCommandcmm=newSqlCommand("INSERTINTOCOMTESTVALUES('A','B','C','D','E')",cnn);cmm.Transaction=tran;cmm.ExecuteNonQuery();//人为抛出一个错误thrownewException("Error!Test");cmm=newSqlCommand("INSERTINTOCOMTESTVALUES('B','B','C','D','E')",cnn);tran.Commit();}catch(System.Exceptionerr){tran.Rollback();cnn.Close();}}

时间: 2024-10-30 20:17:33

关于WebService中数据库事务的奇怪问题,请高手帮忙解决的相关文章

SSI声明式事务不起作用,请高手帮忙看下

问题描述 用的SSI框架(Struts2.1.8+Spring2.5+Ibatis2.3.4)将事务的开启定义在了biz层,声明式事务中指定了哪些方法使用读写事务,如果biz中定义的方法与声明式事务中指定的方法名不一致,应该无法增删改的,但结果是仍然能增删改,请高手看看哪里出了问题声明式事务中定义的是save*,而biz里面方法名是insertEmp,以前SSH集成的时候这样写访问会报错数据也插入不进去,但换成SSI之后,就没这个效果了配置如下:Spring配置<beanid="prope

从文件中读取彝文在SWT中显示乱码,请高手帮忙解决,谢谢,----急急!!!!!

问题描述 现在做一个软件,其中有关于从文件中读取彝文并程序在SWT中显示的功能,现在从文件读取后显示是乱码,请高手指教一下,十分感谢!!! 解决方案 解决方案二:可以肯定是编程格式有问题,没看到你的代码,不好解答.解决方案三:你读的时候就用utf8格式就可以了解决方案四:应当是前后的编码格式有问题,你输出的时候以utf8格式输出解决方案五:Filef=newFile("E:\t.txt");InputStreamReaderread=newInputStreamReader(newFi

请高手帮忙解决个Bitmap的16进制字符数组转化为图片并保存的问题!先谢谢了~在线关注中。。。

问题描述 RT:我这里有个需求,就是从FLASH那边把图片截图后通过.netremoting发送到.net这边(也就是我处理的.)同事把FLASH那边的截图以BITMAP的方式转化成了字符串数组如下:88885d,98945d,98945d,98945d,98945d,98945d,98945d,98945d,98945d,98945d,98945d,98945d,9a945d,90945d,97945d,99945d,98945d,98945d,98945d,98945d,98945d,989

eclipse+gradle build过程中出现此问题 求高手帮忙解决下

问题描述 eclipse+gradle build过程中出现此问题 求高手帮忙解决下 Execution failed for task ':PunkHoo:packageAllDebugClassesForMultiDex'. java.util.zip.ZipException: duplicate entry: android/support/v4/internal/view/ SupportMenu.class

shell中的telnet的问题,请高手指教!

问题描述 shell中的telnet的问题,请高手指教! 用shell自动实现一个telnet到目标,然后对目标中的一个目录进行tar打包,然后退出目标,理想中的代码: telnet IP 端口 tar -czvf ...... exit 但是telnet后,界面会切换到登录目标后的界面,所以本地shell中的以下tar命令和exit都执行不到,哪位高手能有好的办法实现这样的功能呢?python中有相应的功能,但是需求中不允许用python. 是否socket能实现这样的功能呢?但是我认为soc

ajaxpro 验证出现的一点问题,比较奇怪,请各位高手帮忙解决

问题描述 这个是代码<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="ajaxtest.aspx.cs"Inherits="ajaxtest"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xh

错误信息-编译DX9程序出现奇怪的错误,请大牛帮忙解决,谢谢

问题描述 编译DX9程序出现奇怪的错误,请大牛帮忙解决,谢谢 1>g:directx 2007included3dx9math.h(787) : error C2143: syntax error : missing ',' before '*' 1>g:directx 2007included3dx9math.h(792) : error C2143: syntax error : missing ',' before '*' 1>g:directx 2007included3dx9m

VS2012的Windows Service程序打包成exe后安装,但是在进程管理中找不到这个服务,是怎么回事呢???求高手帮忙解决,谢谢!!在线等……

问题描述 VS2012的WindowsService程序打包成exe后安装,但是在进程管理中找不到这个服务,是怎么回事呢???求高手帮忙解决,谢谢!!在线等-- 解决方案 解决方案二:windowsservice安装过程中,不光是复制可执行文件,很关键的一步是需要自定义的,就是注册服务,并且启动服务.注册要用到installutil,启动就用netstartxxxxxx解决方案三:我是用这种方法配置打包的,以前有个项目也是按这种方法配置打包成功运行没有问题,不知道这次是怎么回事http://bl

求助,如何通过VB读取word文档中的各级目录信息,请高手指点,送分!

问题描述 如何通过VB读取word文档中的各级目录信息,请高手指点~!送分,谢各路大侠~~ 解决方案 解决方案二:正在关注此项功能,目前唯一的想法是添加书签然后在判断,还没通过程序调试.另外这次要求用C#比较郁闷!