德克云技术联盟

会员中心
发新帖
打印 上一主题 下一主题

SQLserver事务和异常的联合处理以及在c#中的异常捕获
发布人: 李昭 发布时间:2014-08-07 浏览:3355

例:
CREATE PROCEDURE [dbo].[dop]
        @ppp varchar(100)
AS
    DECLARE @ErrorMessage NVARCHAR(2048);
    DECLARE @ErrorSeverity INT;
    DECLARE @ErrorState INT;
  
        BEGIN TRANSACTION
        begin try
                insert into  dbo.wee(we,ih) values(@ppp,null)
                insert into  dbo.wee(we,ih) values(@ppp+'eeeee',null)
                insert into  dbo.wee(we,ih) values(@ppp+'eeeeewwwww',null)
        COMMIT
        end try
        begin catch
                ROLLBACK
                SELECT @ErrorMessage = ERROR_MESSAGE(),
           @ErrorSeverity = ERROR_SEVERITY(),
           @ErrorState = ERROR_STATE();
        end catch
        if @ErrorMessage is not null
        begin
                 RAISERROR (@ErrorMessage, -- Message text.
               @ErrorSeverity, -- Severity.
               @ErrorState -- State.
               );

        end

以上存储过程为sqlserver写的,假设we字段长度定义为为95,那么存储过程在输入字符串为90个字符的时候就会回滚并报错。

以下为在c#中调用的实例:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            SqlConnection theCon = new SqlConnection(ConfigurationManager.ConnectionStrings["test1ConnectionString"].ToString());
            using (theCon)
            {
                string sql = "exec dop 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh'";
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = theCon;
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;
                theCon .Open ();
                object theo= cmd.ExecuteScalar ();
                ClientScript.RegisterStartupScript(this.GetType(), "sada", "<script>window.location='#'</script>");
            }
        }catch (Exception ex){
            throw ex;
        }
    }
}

c#能自动捕获这一异常。然后进行程序里面的处理。


分类浏览
关于我们
联系我们
技术联盟
云服务
云技术
云合作
帮助中心
发帖规则
QQ客服
内部通道
企业邮箱
企业论坛
版本选择
手机版
电脑版
用手机扫描下方二维码查看手机版页面

版权所有 西安云联电子科技有限公司
Copyright @ 2011-2022 | decoclouds.com All Rig
陕ICP备13002202号-1

快速回复 返回顶部 返回列表