sql insert语句使用sql事务无法正常工作

时间:2013-03-20 08:02:59

标签: c# sql sql-server transactions

SqlConnection con = new SqlConnection(GlobalData.GetConnectionString());

string queryDepartment = null;
if (rbtnYes.Checked == true)
{
    if (rbtnMale.Checked == true)
    {
        queryDepartment = 
@"BEGIN TRY 
    BEGIN TRAN 
    insert into UserDetails 
       values('" + Convert.ToInt32(txtID.Text) + "','" + txtFullName.Text + "','" + txtPassword.Text + "','" + txtUserName.Text + "','" + cbDepartment.SelectedValue.ToString() + "','" + txtContactAddress.Text + "','" + Convert.ToInt64(txtContactNumber.Text.ToString()) + "','" + txtContactEmail.Text + "',CAST(GETDATE() AS DATE),'" + rbtnYes.Text + "',null,'" + rbtnMale.Text + "','" + Convert.ToInt64(txtSalary.Text.ToString()) + @"'); 
    insert into Users 
       values('" + GlobalData.UsersID_AddUsers + "','" + GlobalData.RoleID_AddUsers + "','" + txtUserName.Text + "','" + Convert.ToInt32(txtID.Text) + @"'); 
    COMMIT TRAN 
  END TRY 
  BEGIN CATCH 
    SELECT ERROR_NUMBER() AS ErrorNumber,ERROR_SEVERITY() AS ErrorSeverity,ERROR_STATE() AS ErrorState,ERROR_PROCEDURE() AS ErrorProcedure,ERROR_LINE() AS ErrorLine,ERROR_MESSAGE() AS ErrorMessage 
    IF @@TRANCOUNT > 0 
    ROLLBACK TRANSACTION 
  END CATCH";
    }
}

我正在尝试使用sql事务将记录插入到c#代码的两个表中,但它无法正常工作。

虽然我使用sql管理软件在sql表中插入相同的语句,但是它正在工作。

3 个答案:

答案 0 :(得分:0)

您的SQL以BEGIN开头,但没有匹配的END。您不需要BEGIN - 将其删除。

答案 1 :(得分:0)

既然你说没有错误出现那么我想这是问题,你的情况不匹配,你介意把一个调试点检查你的条件匹配调用你的插入函数吗?

if (rbtnYes.Checked == true)

if (rbtnMale.Checked == true)

答案 2 :(得分:0)

谢谢你,我已经解决了我自己的问题......... <问题是

         GlobalData.RoleID_AddUsers is 0..

但由于sql尝试捕获它没有向我显示错误....或捕获异常.... 但当我删除sql尝试捕获...然后它开始抛出异常说外键违反....和bla bla ........我按照要求调整代码.... 问题解决了......:)