从C#中的存储过程中捕获错误
发布时间:2020-12-16 01:38:49 所属栏目:百科 来源:网络整理
导读:我有一个存储过程,用于在登录期间验证用户. 如果成功则返回用户实体,并且效果很好!我的问题是,如果它不起作用,我会在SP中引发错误,如何捕获此错误并以最佳方式使用它?现在我得到nullrefference,这是代码: 存储程序: ALTER PROCEDURE getEmployee ( @user
我有一个存储过程,用于在登录期间验证用户.
如果成功则返回用户实体,并且效果很好!我的问题是,如果它不起作用,我会在SP中引发错误,如何捕获此错误并以最佳方式使用它?现在我得到nullrefference,这是代码: 存储程序: ALTER PROCEDURE getEmployee ( @username nvarchar(50),@password nvarchar(50) ) AS DECLARE @Error_MSG nvarchar(50) BEGIN IF EXISTS (select * from Employee where eUsername = @username AND pword = @password) begin select * from Employee where eUsername = @username AND pword = @password END ELSE BEGIN SET @Error_MSG = 'Wrong password,or user doesnt exist' RAISERROR (@Error_MSG,11,1) END END 在代码中看起来像这样,SP就是getEmployee ActivityDatabaseDataContext dc = new ActivityDatabaseDataContext(); Employee emp; public bool logIn(string piUsername,string piPassword) { try { emp = dc.getEmployee(piUsername,piPassword).Single(); } catch (Exception ex) { errorMsg = ex.Message + ex.InnerException.Message; } if (emp != null) { AppHelper.AppHelper.setUser(emp); return true; } else { return false; } 我的问题是我应该如何处理异常? 解决方法
我通常不会从SP引发错误,除非它实际上是操作的系统问题.输入错误的用户名和密码是一个用户问题,你只需要在接口级别进行处理,所以我将大部分SP丢弃并处理两个用例(返回1行或0行)业务层或接口代码.如果是0行,则向客户端抛出“错误的用户名或密码”消息,如果为1,则登录.
ALTER PROCEDURE getEmployee ( @username nvarchar(50),@password nvarchar(50) ) AS BEGIN select * from Employee where eUsername = @username AND pword = @password END (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |