首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >“SqlTransaction 已完成;它再也无法使用”解决方法

“SqlTransaction 已完成;它再也无法使用”解决方法

作者头像
全栈程序员站长
发布于 2022-08-31 02:12:58
发布于 2022-08-31 02:12:58
3.4K0
举报

大家好,又见面了,我是你们的朋友全栈君。 当只是使用一次事务时,只用简单的事务就可以了

示例代码:

SqlServerDataBase obj = new SqlServerDataBase(); SqlConnection conn = obj.DBconn(); conn.Open(); SqlTransaction myTrans; myTrans = conn.BeginTransaction(IsolationLevel.ReadCommitted);

try { obj.Insert(“insert into StuInfo (StuNumber,Name,Sex,Specialty) values(‘” + stuNumber + “‘,'” + name + “‘,'” + sex + “‘,'” + specialty + “‘)”, null); obj.Insert(“insert into StuSkill(StuNumber,Skill) values(‘” + stuNumber + “‘,'” + skill + “‘)”, null); myTrans.Commit(); Response.Write(“两条数据均插入到数据库中!”); } catch (Exception ex) { try { myTrans.Rollback(); } catch (SqlException sqlEx) { if (obj.DBconn() != null) { Response.Write(sqlEx.GetType()+”数据库打开失败”); Response.Redirect(“submit.htm”); } } } finally { obj.DBconn().Close(); }

但是设计多个事务处理,比方使用for循环时,处理不当就会产生“SqlTransaction 已完成;它再也无法使用”的问题,主要就是因为SqlTransaction 使用了Commit()后就是不能在使用了,必须重新BeginTransaction()一个。

批处理事务不应该把transaction事务放在for循环里,造成多个事务,这将导致错误. 应该把for放在transaction里,当成一个事务来处理,进行批处理

示例代码:

protected void btnDelete_Click(object sender, EventArgs e) //删除 { SqlServerDataBase del = new SqlServerDataBase(); string str = “”; SqlConnection conn = del.DBconn(); conn.Open(); SqlTransaction myTrans; myTrans = conn.BeginTransaction(IsolationLevel.ReadCommitted);

ListBox1.Items.Clear(); try { for (int i = 0; i < GridView1.Rows.Count; i++) //从GridView中选中checkbox { GridViewRow row = GridView1.Rows[i]; bool isChecked = ((CheckBox)row.FindControl(“chkSelect”)).Checked; if (isChecked) { ListBox1.Items.Add(GridView1.Rows[i].Cells[2].Text); //Column 1 is the StuNumber column str = GridView1.Rows[i].Cells[1].Text; //获取删除行的StuNumber的值 // Response.Write(str.ToString()); del.Delete(“delete from StuInfo where StuNumber = ‘” + str + “‘”, null); del.Delete(“delete from StuSkill where StuNumber = ‘” + str + “‘”, null);//删除 }

} myTrans.Commit(); } catch (Exception ex) { try { myTrans.Rollback(); } catch (SqlException sqlEx) { if (del.DBconn() != null) { Response.Write(sqlEx.GetType() + “数据库打开失败”); Response.Redirect(“submit.htm”); } } } finally { conn.Close(); } BindData(); } }

注意:两者在使用上是有区别的!

另外在windows服务中,

windows的服务服务正常运行一段时间后,在ontimer中就无法再启动了,提示:此SqlTransaction已完成;它再也无法使用。 有可能是 timer 时间间隔 太短,造成事务太频繁! 也可能是Transaction两次提交的原因,需要注意一下timer的启用时机。

参考网站:

C#事务的使用、示例及注意事项

http://blog.csdn.net/kiki113/archive/2007/04/29/1591999.aspx

http://topic.csdn.net/u/20070830/10/62719c5d-cb7a-47e5-87a3-89077d82dc77.html

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143857.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
软件测试:黑白盒测试的区别及白盒测试全面解析与应用
白盒测试方法应用于代码评审、单元程序之中,而黑盒测试方法则应用于模块、组件等大单元的功能测试之中。
Srlua
2024/10/19
4450
软件测试:黑白盒测试的区别及白盒测试全面解析与应用
白盒测试:如何进行代码级别的测试?
白盒测试也称结构测试,透明盒测试。主要用于单元测试阶段,代码和逻辑的测试,重点复杂的测试,是一种测试用例设计方法,不同于黑盒测试,白盒测试是可以看到内部代码如何运作的,可通过测试来检测产品内部是否符合规定正常运行。
测试开发技术
2023/08/21
4280
白盒测试:如何进行代码级别的测试?
软件工程黑盒白盒测试
等价类划分法是把程序的 输入域 划分为若干部分,然后从每个部分中选取少数代表性数据当作测试用例。
wsuo
2021/01/14
1.6K0
软件工程黑盒白盒测试
白盒测试用例设计方法有哪些_软件测试语句覆盖测试用例
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/04
5720
白盒测试用例设计方法有哪些_软件测试语句覆盖测试用例
白盒测试中的几种覆盖方法
文章转自:http://www.51testing.com/html/44/n-3713444.html 白盒测试用例设计的一个很重要的评估标准就是对代码的覆盖度。一说到覆盖,大家都感觉非常熟悉,但是常见的覆盖都有哪些?各自有什么优缺点?在白盒测试的用例设计中我们应该如何自如地运用呢?今天小编就为大家总结了一下几种常见的覆盖以及各自的优缺点。 白盒测试中常见的覆盖有六种:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。下面我们就分别看看这几种不同的覆盖究竟是什么鬼。 一、语句覆盖(St
张俊怡
2018/04/24
10.1K0
白盒测试中的几种覆盖方法
白盒测试技术_静态白盒测试
它是度量测试完整性的一个工具,通常可以分为逻辑覆盖和功能覆盖。覆盖率 =(被执行到的项数/总项数)* 100%
全栈程序员站长
2022/09/27
1.6K0
白盒测试技术_静态白盒测试
软件测试基础知识 – 说一说黑盒与白盒的测试方法[通俗易懂]
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net
全栈程序员站长
2022/09/05
1.1K0
技术分享 | 白盒测试方法论
白盒测试又称为结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法。盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构,对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
霍格沃兹测试开发
2022/03/22
5170
软考高级:白盒测试用例(语句覆盖、判断覆盖、条件组合覆盖、条件判定组合覆盖)概念和例题
白盒测试是一种软件测试方法,它检查程序内部的逻辑结构。在白盒测试中,测试用例是基于程序的内部代码和逻辑来设计的。下面是几种常见的白盒测试用例设计方法的概念解释以及它们对应的Java代码示例。
明明如月学长
2024/05/24
1.2K0
白盒测试的测试用例设计方法
对简单的程序流程而言,确定程序的路径有多少条可通过:语句覆盖(覆盖率100%);分支(判定)覆盖(覆盖率85%);条件覆盖;分支-条件覆盖;条件组合覆盖;路径覆盖(覆盖率80%)来确定,这也是白盒测试的主要技术。
全栈程序员站长
2022/11/07
1.4K0
白盒测试的测试用例设计方法
图解-白盒测试之逻辑覆盖
白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
wangmcn
2022/07/26
1.1K0
图解-白盒测试之逻辑覆盖
测试技术|白盒测试以及代码覆盖率实践
白盒测试也称逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件程序验证,属于基于代码的测试技术。与之相对应的黑盒测试是从用户角度对软件进行测试。
互联网金融打杂
2022/08/01
2.1K0
测试技术|白盒测试以及代码覆盖率实践
黑盒测试和白盒测试的区别
1.        软件测试方法:白盒测试、黑盒测试、灰盒测试、静态测试、动态测试
庞小明
2018/10/11
9.8K1
白盒测试?看这一篇就够了
点击上方蓝字“一个正经的测试“关注我,每周早上08:30准时推送,每月不定期赠送技术书籍。
一个正经的AI
2024/01/22
8850
白盒测试?看这一篇就够了
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
综上,白盒测试和黑盒测试的主要区别在于测试者对系统内部结构的了解程度。白盒测试关注程序内部逻辑和代码覆盖率,而黑盒测试则关注系统的功能和用户体验。
SarPro
2024/04/25
9530
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
浅谈黑盒测试和白盒测试
  从图中可以直接看出来,黑盒测试就当整个程序是个黑盒子,我们看不到它里面做了些什么事情,只能通过输入输出看是否能得到我们所需的来测试。而白盒测试可以当盒子是透明的,里面的一切我们都看的清楚,从而我们可以通过去测内部结构来测试。
lyb-geek
2018/07/26
4.1K0
浅谈黑盒测试和白盒测试
白盒测试方法与黑盒测试方法简析
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
1.5K0
软件测试技术之: 白盒测试和黑盒测试[通俗易懂]
一般地,我们将软件测试活动分为以下几类:黑盒测试、白盒测试、静态测试、动态测试、手动测试、自动测试等等。
全栈程序员站长
2022/10/02
7.1K0
软件测试技术之: 白盒测试和黑盒测试[通俗易懂]
白盒测试 | 用例设计方法之条件组合覆盖
条件组合覆盖:列出所有判定条件中可能的取值组合,使得每个判定条件结果的所有可能组合至少出现一次
王大力测试进阶之路
2022/03/14
2.3K0
白盒测试 | 用例设计方法之条件组合覆盖
测试开发需要学习的知识结构[通俗易懂]
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
全栈程序员站长
2022/07/28
5590
测试开发需要学习的知识结构[通俗易懂]
推荐阅读
相关推荐
软件测试:黑白盒测试的区别及白盒测试全面解析与应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档