execute后的事务计数指示缺少了commit或rollback transaction
con.Open();
SqlTransaction tran = con.BeginTransaction();
try
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
SqlCommand sqlcom = new SqlCommand("GoodsOutput", con);
sqlcom.Transaction = tran;
sqlcom.CommandType = CommandType.StoredProcedure;
sqlcom.Parameters.AddWithValue("@出仓单号", MOdanhao.Text);
sqlcom.Parameters.AddWithValue("@出仓日期", MOdate.Value);
sqlcom.Parameters.AddWithValue("@操作人员代码", MOperson.Text);
sqlcom.Parameters.AddWithValue("@物料代码", Convert.ToString(row.Cells[0].Value));
sqlcom.Parameters.AddWithValue("@数量", Convert.ToInt32(row.Cells[1].Value));
sqlcom.Parameters.AddWithValue("@备注", MOremark.Text);
sqlcom.Parameters.Add(new SqlParameter("@return",SqlDbType.Int));
sqlcom.Parameters["@return"].Direction=ParameterDirection.ReturnValue;
sqlcom.ExecuteNonQuery();
if (int.Parse(sqlcom.Parameters["@return"].Value.ToString())==0)
{
tran.Rollback();
MessageBox.Show("数量不足");
return;
}
sqlcom.Dispose();
GoodsOutput存储过程
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[GoodsOutput] @出仓单号 nchar(20),@出仓日期 datetime,@操作人员代码 nchar(10),
@物料代码 nchar(16),@数量 int,@备注 nchar(20)
AS
begin transaction
declare @序号 int,@number int
if not exists(select * from Output)
set @序号=1
else
set @序号=(select max(序号) from Output)+1
set @number=(select 库存量 from material where 物料代码=@物料代码)-@数量
if @number<0
begin
rollback
return 0
end
else
begin
insert into Output values(@序号,@出仓单号,@出仓日期,@操作人员代码,@备注,@物料代码,@数量)
update material set 库存量=库存量-@数量 where 物料代码=@物料代码
commit
return 1
end
}
把存储过程的事务去掉就不会出错,添加上去就出错。 求个解决方法 (不能取消事务)
相关推荐
C#事务处理(Execute Transaction)实例解析
本文所述为C#事务处理(Execute Transaction)的一个实例,包含了创建SqlTransaction 对象并用SqlConnection对象的BeginTransaction()方法开始事务,创建保存SQL语句,将SqlCommand对象的CommandText属性设置为第一个INSERT语句,第一个INSERT语句在Customers表中增加一行,提交事务,使INSERT语句增加的两行在数据库中保存起来。 具体的实例代码如下: using System; using System.Data; using System.Data.SqlClient; namespace Exe
Spring事务原理、Spring事务配置的五种方式
Spring事务原理、Spring事务配置的五种方式
SQL SERVER事务处理详解.doc
SQL SERVER事务处理详解 事务操作的语法: 事务三种运行模式: 事务定义: BEGIN TRANSACTION BEGIN DISTRIBUTED TRANSACTION COMMIT TRANSACTION COMMIT WORK ROLLBACK WORK SAVE TRANSACTION BEGIN TRANSACTION
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
主要介绍了django框架事务处理,结合实例形式总结分析了使用ORM 事务及raw sql,customize sql 事务处理相关实现技巧与操作注意事项,需要的朋友可以参考下
浅析Python中MySQLdb的事务处理功能
给大家介绍了Python中MySQLdb的事务处理功能,对大家学习python操作数据具有一定参考借鉴价值,有需要的朋友们可以参考借鉴。



