我看到文章上说尽管这是一个简单的示例,但它还是充分显示了在.NET应用程序中使用事务处理是多么的简单。请记住,事务处理只有在处理一组命令时才是必要的。然而我确看到有人对存储过程加ado.net事务,为什么啊
public void _AddCRMCoFinancePerson(out string strMessage, int nCRMCompanyID, string strFinancePersonName, string strFinanceNumber, string strFinancePhone)
{
SqlConnection connection = new SqlConnection(_GlobalClass._strConn);
connection.Open();
SqlTransaction transaction = connection.BeginTransaction();
SqlCommand command = new SqlCommand("P__CRM_AddCRMCoFinancePerson", connection);
command.Transaction = transaction;
try
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@Message", SqlDbType.NVarChar, 0x3e8).Direction = ParameterDirection.Output;
command.Parameters.Add("@CRMCompanyID", SqlDbType.Int).Value = nCRMCompanyID;
command.Parameters.Add("@FinancePerson", SqlDbType.NVarChar, 30).Value = strFinancePersonName;
command.Parameters.Add("@FinanceNumber", SqlDbType.NVarChar, 80).Value = strFinanceNumber;
command.Parameters.Add("@FinancePhone", SqlDbType.NVarChar, 30).Value = strFinancePhone;
command.Parameters.Add("@OpId", SqlDbType.Int).Value = base.nMyPersonId;
command.Parameters.Add("@CoId", SqlDbType.Int).Value = base.nCoID;
command.ExecuteNonQuery();
strMessage = command.Parameters["@Message"].Value.ToString();
transaction.Commit();
}
catch (Exception exception)
{
strMessage = "发生数据库错误,请于管理员联系( " + base._FormatMessage(exception.Message.ToString()) + " )";
transaction.Rollback();
}
connection.Close();
}存储过程却没有加任何事务
CREATE PROCEDURE P__CRM_AddCRMCoFinancePerson@Message nvarchar(1000) output,
@CRMCompanyID int,
@FinancePerson nvarchar(30),
@FinanceNumber nvarchar(80),
@FinancePhone nvarchar(30),
@OpId int ,
@CoId intAsset nocount on--初始值set @Message = ''if not exists( select * from _CRM_Company where CRMCompanyID = @CRMCompanyID and IsDel = 0 )
begin
set @Message = '非法!提供参数出错!该客户公司可能已被删除!'
return
end--主程序insert into _CRM_Company_FinancePerson( FinancePersonName, FinancePhone, FinanceNumber, CRMCompanyID, OpId, CoId )
values( @FinancePerson, @FinancePhone, @FinanceNumber, @CRMCompanyID, @OpId, @CoId )
if @@rowcount = 0
begin
set @Message = '添加财务联系人失败!'
end
set nocount offGO
public void _AddCRMCoFinancePerson(out string strMessage, int nCRMCompanyID, string strFinancePersonName, string strFinanceNumber, string strFinancePhone)
{
SqlConnection connection = new SqlConnection(_GlobalClass._strConn);
connection.Open();
SqlTransaction transaction = connection.BeginTransaction();
SqlCommand command = new SqlCommand("P__CRM_AddCRMCoFinancePerson", connection);
command.Transaction = transaction;
try
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@Message", SqlDbType.NVarChar, 0x3e8).Direction = ParameterDirection.Output;
command.Parameters.Add("@CRMCompanyID", SqlDbType.Int).Value = nCRMCompanyID;
command.Parameters.Add("@FinancePerson", SqlDbType.NVarChar, 30).Value = strFinancePersonName;
command.Parameters.Add("@FinanceNumber", SqlDbType.NVarChar, 80).Value = strFinanceNumber;
command.Parameters.Add("@FinancePhone", SqlDbType.NVarChar, 30).Value = strFinancePhone;
command.Parameters.Add("@OpId", SqlDbType.Int).Value = base.nMyPersonId;
command.Parameters.Add("@CoId", SqlDbType.Int).Value = base.nCoID;
command.ExecuteNonQuery();
strMessage = command.Parameters["@Message"].Value.ToString();
transaction.Commit();
}
catch (Exception exception)
{
strMessage = "发生数据库错误,请于管理员联系( " + base._FormatMessage(exception.Message.ToString()) + " )";
transaction.Rollback();
}
connection.Close();
}存储过程却没有加任何事务
CREATE PROCEDURE P__CRM_AddCRMCoFinancePerson@Message nvarchar(1000) output,
@CRMCompanyID int,
@FinancePerson nvarchar(30),
@FinanceNumber nvarchar(80),
@FinancePhone nvarchar(30),
@OpId int ,
@CoId intAsset nocount on--初始值set @Message = ''if not exists( select * from _CRM_Company where CRMCompanyID = @CRMCompanyID and IsDel = 0 )
begin
set @Message = '非法!提供参数出错!该客户公司可能已被删除!'
return
end--主程序insert into _CRM_Company_FinancePerson( FinancePersonName, FinancePhone, FinanceNumber, CRMCompanyID, OpId, CoId )
values( @FinancePerson, @FinancePhone, @FinanceNumber, @CRMCompanyID, @OpId, @CoId )
if @@rowcount = 0
begin
set @Message = '添加财务联系人失败!'
end
set nocount offGO
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货