循环执行sql语句,最后一起提交,出现多行的时候总是在等待状态,一行就没有问题

问题描述

publicstaticBooleanExecuteQuery(stringConnectionSql,string[]ExeuteSql)//这里有个sql语句string数组{BooleanRtn=true;SqlConnection_SqlConn=newSqlConnection(ConnectionSql);_SqlConn.Open();SqlTransactiontrans=_SqlConn.BeginTransaction();try{foreach(stringsqlinExeuteSql){if(sql.Trim()!=""){ExecuteQueryEnd(_SqlConn,trans,sql);//执行下面的方法,到后面一起提交,防止出现有的提交有的不能提交的问题}else{continue;}}trans.Commit();}catch(System.Data.SqlClient.SqlExceptione){trans.Rollback();Rtn=false;thrownewException(e.Message);}_SqlConn.Close();returnRtn;}publicstaticvoidExecuteQueryEnd(SqlConnectionconn,SqlTransactionstr,stringsqlcmd){SqlCommand_Scmd=newSqlCommand(sqlcmd,conn);_Scmd.Transaction=str;_Scmd.CommandType=CommandType.Text;_Scmd.CommandTimeout=6000;try{_Scmd.ExecuteNonQuery();}catch{str.Rollback();}}

解决方案

解决方案二:
直接这样改算了publicstaticBooleanExecuteQuery(stringConnectionSql,string[]ExeuteSql)//这里有个sql语句string数组{BooleanRtn=true;SqlConnection_SqlConn=newSqlConnection(ConnectionSql);_SqlConn.Open();SqlTransactiontrans=_SqlConn.BeginTransaction();try{string_str="";foreach(stringsqlinExeuteSql){if(sql.Trim()!=""){_str=_str+sql+";";}else{continue;}}ExecuteQueryEnd(SqlConn,trans);trans.Commit();}catch(System.Data.SqlClient.SqlExceptione){trans.Rollback();Rtn=false;thrownewException(e.Message);}_SqlConn.Close();returnRtn;}publicstaticvoidExecuteQueryEnd(SqlConnectionconn,SqlTransactionstr,stringsqlcmd){SqlCommand_Scmd=newSqlCommand(sqlcmd,conn);_Scmd.Transaction=str;_Scmd.CommandType=CommandType.Text;_Scmd.CommandTimeout=6000;try{_Scmd.ExecuteNonQuery();}catch{str.Rollback();}}
解决方案三:
还是不行啊,只有两行记录,都好久,如果采用每次提交很快的
解决方案四:
oo
解决方案五:
string[]ExeuteSql里面是什么?是insertinto...还是调了SP?
解决方案六:
string[]ExeuteSql里面是什么?是insertinto...还是调了SP?有delete,insertinto都有
解决方案七:
事务必须在每个执行里都begin然后要end,你所有的操作只有一个begin,可能被事务锁死了
解决方案八:
我有commit,同rollback啊
解决方案九:
你把你现在出现的问题描述清楚,看的不是很明白]还有最好把ExeuteSql的值帖出来看看
解决方案十:
你的sql数组里有没有可能对同一个数据项进行更新和查询操作?如果有的话有可能会被锁死,你可以在变得很慢的时候到管理器里的进程管理器查看是否进程锁死了。
解决方案十一:
楼上所说的,我查了,没有被锁死,我把生成的sql语句放到查询分析器,很快就可以执行,我还是觉得哪两个方法有问题,但一时找不出是哪里问题
解决方案十二:
我发现在同一数据库操作没问题,如是两个数据库之间查询就不行,如selecta.code,b.namefromtablea,[192.168.0.66].dbo.tablebwherea.code=b.code这样查询结果更新有问题
解决方案十三:
引用11楼zsyutiannew的回复:

我发现在同一数据库操作没问题,如是两个数据库之间查询就不行,如selecta.code,b.namefromtablea,[192.168.0.66].dbo.tablebwherea.code=b.code这样查询结果更新有问题

这样需要先添加链接服务器的
解决方案十四:
你把_Scmd.CommandTimeout=6000;这行注释掉试试

时间: 2024-10-24 08:17:32

循环执行sql语句,最后一起提交,出现多行的时候总是在等待状态,一行就没有问题的相关文章

在MySQL数据库中使用C执行SQL语句的方法_Mysql

他们将讨论返回数据的语句,例如INSERT以及不返回数据的语句,例如UPDATE和DELETE.然后,他们将编写从数据库检索数据的简单程序 执行SQL语句 现在,我们已经有了一个连接,并且知道如何处理错误,是时候讨论使用我们的数据库来作一些实际工作了.执行所有类型的SQL的主关键字是mysql_query: int mysql_query(MYSQL *connection, const char *query) 正如您所见,它非常简单.它取一个指向连接结构的指针和包含要执行的SQL的文本字符串

请大家帮忙-实现使用C#语言,在.net开发平台中执行sql语句

问题描述 实现使用C#语言,在.net开发平台中执行sql语句 实现使用C#语言,在.net开发平台中执行sql语句了,如查询某张表数据,向某张表插入一条数据,在某张表中编辑一条数据,删除某张表的一条数据. 解决方案 给你段代码,你参考一下 using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.W

node js-Node.js for循环执行sql删除语句 返回结果集出现

问题描述 Node.js for循环执行sql删除语句 返回结果集出现 for (var i = 0; i < ManagerIDs.length; i++) { var sql = 'delete from adminList where user_id = ?'; var args = parseInt(ManagerIDs[i]); console.log(args); myPool.query(sql args function (err res) { if (err) { consol

hive中执行sql语句出现的问题

The expression after ELSE should have the same type as those after THEN: "bigint" is expected but "i hive中执行sql语句: select pc.category_id, sum(case when t.so_month between 3 and 5 then t.order_item_num else 0 end) as spring, sum(case when t.

客户端发送-Servlet执行SQL语句把汉字插入到MySql,此时在MySql中汉字变成了方块,乱码

问题描述 Servlet执行SQL语句把汉字插入到MySql,此时在MySql中汉字变成了方块,乱码 在安卓客户端有一个注册登录程序,注册的时候,输入用户名密码,客户端用GET方式把表单数据传到Servlet,然后Servlet通过 String name=request.getParameter("username");String password=request.getParameter("password");把用户名密码得到,之后执行SQL语句把用户名密码

java-为什么我在Java类中执行SQL语句,程序没错,而数据库却没执行??

问题描述 为什么我在Java类中执行SQL语句,程序没错,而数据库却没执行?? 解决方案 不知道画了删除线是什么意思,你确认这些代码有效么 解决方案二: 你用的什么啊?Hibernate?还是别的框架啊?Hibernate的话,可能是事务没有提交,你执行flush方法就可以了 解决方案三: 代码可以贴全一点吗?看不到关键部分 解决方案四: 代码内容太少了,你的Sqlca是个什么,最起码给个声明. 解决方案五: 你的sqlca是什么啊? 解决方案六: executeSQL方法问题 这个方法只能是查

Oracle调用接口(OCI)源码剖析(2):执行SQL语句并获取结果

概述 接着上一篇文章<Oracle调用接口(OCI)源码剖析(1):创建数据库连接>,我们继续对OCI中执行SQL语句并获取结果的源码进行剖析.该操作主要是由两个函数完成的:CDbExecSql和CDbFetch,其中CDbExecSql函数用于执行普通SQL语句,CDbFetch函数用于获取数据库的返回结果. 下面对这两个函数的源码进行分析. OCI中执行SQL语句并获取结果的源码剖析 1.执行普通SQL语句的操作 在OCI中,执行普通SQL语句的操作是由CDbExecSql函数实现的,其代

json-关于asp josn 接到参数 执行 sql语句 报错问题

问题描述 关于asp josn 接到参数 执行 sql语句 报错问题 <%Dim memberSet member = jsObject() dim dbconnectionuplistDBPathSQLSortLboundUboundDim id=request(""jsoncallback"")set dbconnection=Server.CreateObject(""ADODB.Connection"") DBP

让ASP实现可以在线执行SQL语句

sql|语句|在线|执行 基本上的CMS都具备在线执行SQL语句的功能,能让熟悉SQL语言的管理更加自由.下面这段代码可以让ASP实现可以在线执行SQL语句功能.结合你的ASP程序可以达到很好效果,不过如果没有好使用对数据库来说可是一场灾难.程序代码: <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><%Option Explicit%><%'// DatebaseDim ConnStr,conn Conn