ASP.NET处理数据错误

@ERROR
Create PROCEDURE InsertEmployee(@FirstName nvarchar(10)) AS
INSERT INTO Employees(firstname) VALUES (@FirstName)
RETURN @@ERROR

Dim cmd As New SqlCommand(sql,conn)
cmd.CommandType=CommandTyle.StoredProcedure //SQLSERVER存储过程
cmd.Parameters.Add("@FirstName","Mark")
Try
    cmd.ExecuteNonQuery()
catch ex As Exception
    Response.Write("Error:"&ex.Message&<br/>)
End Try

使用RAISERROR命令引发数据库错误
RAISERROR({msg_id|msg_str}{,severity,state}[,argument[,……n]])

Msg_id 如果你希望使用存储在Sysmessage表中消息,在"error"字段中指定该值即可。
          注意,您只能使用编号在13000以上的消息
Msg_str 用来表示错误文本。如果指定该参数来代替msg_id,将使用msg_id默认值50000。
           任何编号为50000或者50000以上的错误消息都被认为是由用户定义的
Severity 该值指定了您所引发错误的相对严重性。您可以为其指定0-18之间的数值(18表示最严重);
            该范围之外的值由SQL保存。在某些地方,我们也称之为“等级”
State 1-127之间任意的数字,用来表示当错误发生时该错误的状态

IF @ERROR<>0
    BEGIN
        RAISERROR('Error log couldn't be updated',1,1)
    END
END

在.NET中处理错误
System.Data.SqlException
成员
Class 在SQL语句执行期间所产生的第一个错误的严重性
Errors 包含SqlError对象的SqlEooroCollection类的一个实例。SQL可以返回多条错误,
        您可以使用该集合枚举这些错误。
Message 所产生的错误的文本内容。如果产生多个错误,所有的文本都将被添加,
            并且在它们之间使用回车符隔开。
Number 在Errors集合中所产生的第一个错误的消息ID。如果您通过SQL语句指出错误的话,
           Number被默认为50000
State 在Errors集合中所产生的第一个错误的状态值

Try
    cmd.ExecuteNonQuery()
Catch ex As System.Data.SqlClient.SqlException
    Response.Write(replace(ex.Message,controlchars.lf,"<br/>"))
    Response.Write(replace(ex.state))
    Dim sErr As SqlError   
    For Each sErr In ex.Errors
        Response.Write(replace(ex.Message,controlchars.lf,"<br/>"))
    Next
End Try

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值