在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
修改资料库的时候,我们要做一些判定,比如输入的资料不能为空、资料已存在或与其它表的资料关联不能删除等等。 输入的资料不能为空,这些都直接交由逻辑层去处理,而资料已存在呀、关联呀等等,这部分推荐让数据层去执行,但怎么返回提示信息并提示用户呢?catch是个不错的选择!
当你要新增一笔资料的时候,不要做类似于“Sql = Insert into [tableName] values(....);"这样的处理,直接调用存储过程就好了,假定存储过程的名称为[test_prc] 那它的代码类似于下面这样子: 1 CREATE PROCEDURE [dbo].[test_prc]( 2 @formNo nvarchar(20), --单号 3 @formName nvarchar(10) --名称 4 ) 5 AS 6 BEGIN 7 declare 8 9 @Error_Msg nvarchar(200) 10 11 --检查是否为空值 12 IF ISNULL(@formNo,'')='' or ISNULL(@formName,'')='' 13 BEGIN 14 set @Error_Msg = '单号、名称等不能为空值' 15 RAISERROR(@Error_Msg,16,1) WITH NOWAIT 16 return 1 17 END 18 19 --检查程序文件是否存在 20 IF exists (select 1 from [tableName] where formNo=@formNo and formName=@formName) 21 BEGIN 22 set @Error_Msg = '单号'+@formNo+',名称'+@formName+'已存在,不允许增加' 23 RAISERROR(@Error_Msg,16,1) WITH NOWAIT 24 return 1 25 END 26 27 28 --新增 29 INSERT INTO [tableName] 30 ([formNo] 31 ,[formName] 32 ) 33 VALUES 34 (@formNo 35 ,@formName 36 ) 37 END 有了以上代码之后,那我们就在程序中使用try...catch对这些异常信息做捕捉处理,如下: 1 #region 成员方法 2 /// <summary> 3 /// 添加资料 4 /// </summary> 5 /// <param name="formNo">单号</param> 6 /// <param name="formName">名称</param> 7 /// <returns></returns> 8 public bool Do_Process_Add_Info(string formNo, string formName) 9 { 10 bool result = true; 11 SqlParameter[] oSqlParameter = 12 { 13 new SqlParameter("@formNo",SqlDbType.NVarChar,20) , 14 new SqlParameter("@formName",SqlDbType.NVarChar,10) 15 }; 16 try 17 { 18 //赋值 19 oSqlParameter[0].Value = formNo; 20 oSqlParameter[1].Value = formName; 21 22 sqlHelper.SP_ExecuteNonQuery("test_prc", oSqlParameter); //sqlHelper是实例化的用于操作数据库的实例! 23 } 24 catch (Exception err) 25 { 26 result = false; 27 System.Windows.Forms.MessageBox.Show(err.Message); 28 //或者在网页中弹框 29 //Response.Write(err.Message); 30 } 31 return result; 32 } 好了,通过这样子,只要调用这个 Do_Process_Add_Info(string formNo, string formName) 方法就可以了,什么代码逻辑都不用修改,应该有的提示它全有了,呵呵。不知道触发器上面能不能这样子搞呢,呵呵。
|
请发表评论