Foxtable(狐表)用户栏目专家坐堂 → 求一个健壮的代码。try catch问题


  共有2530人关注过本帖树形打印复制链接

主题:求一个健壮的代码。try catch问题

帅哥哟,离线,有人找我吗?
18523500398
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1150 威望:0 精华:0 注册:2018/9/17 11:16:00
求一个健壮的代码。try catch问题  发帖心情 Post By:2018/12/24 10:53:00 [只看该作者]

老师你好,代码中我加上了try catch。

程序因为数据全部来自于调用的外部存储过程,如果存储过程正常调用的话,程序能正常运行,但是想让代码更健壮,我把try catch加上去过后为了避免如果数据库服务器的问题导致sql执行错误,错误时弹出提示框提示错误就好了,不想因为那些原因系统弹很多系统的提示框。

贴图:

 这两张图是出错过后系统出来的错误:


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

 

我的理想效果是出错过后直接提示:

 


图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

 


 回到顶部
帅哥哟,离线,有人找我吗?
18523500398
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1150 威望:0 精华:0 注册:2018/9/17 11:16:00
  发帖心情 Post By:2018/12/24 10:53:00 [只看该作者]

我的代码是这样写的
图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
18523500398
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1150 威望:0 精华:0 注册:2018/9/17 11:16:00
  发帖心情 Post By:2018/12/24 10:54:00 [只看该作者]

系统提示的第一个错误是执行我的那个存储过程出现的错误。我想如果出现错误的话就执行给定的其他代码

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/24 11:10:00 [只看该作者]

1、你尝试开启事务,然后再执行存储过程

 

http://www.foxtable.com/webhelp/scr/2933.htm

 

2、你也可以在存储过程那里捕捉错误,如果出错,返回一个信息或者一个特殊的表,不也可以?你代码判断返回的值,做各种操作。


 回到顶部
帅哥哟,离线,有人找我吗?
18523500398
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1150 威望:0 精华:0 注册:2018/9/17 11:16:00
  发帖心情 Post By:2018/12/24 11:13:00 [只看该作者]

甜版的意思是我在数据库的存储过程里面捕捉错误吗?

 


 回到顶部
帅哥哟,离线,有人找我吗?
18523500398
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1150 威望:0 精华:0 注册:2018/9/17 11:16:00
  发帖心情 Post By:2018/12/24 11:27:00 [只看该作者]

我用事务就会出错。
图片点击可在新窗口打开查看此主题相关图片如下:f$9$39ahbo51sp2`k~9dvw4.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/24 11:34:00 [只看该作者]

1、贴出你所写的事务的代码。用sqlcommand执行你的存储过程啊,不要用querybuilder啊。

 

2、你也可以在你存储过程里面捕捉错误,最后返回成功或者失败的信息。foxtable读取返回值以后,再执行对应代码。


 回到顶部
帅哥哟,离线,有人找我吗?
18523500398
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1150 威望:0 精华:0 注册:2018/9/17 11:16:00
  发帖心情 Post By:2018/12/24 11:39:00 [只看该作者]

以下内容为程序代码:

1 try
2 '扑捉错误
3 Connections(_strBooks).BeginTransaction()
4 Dim s As String = Guid.NewGuid.ToString()
5 Dim q As new QueryBuilder
6 q.TableName = "金相临时"
7 q.ConnectionName=_strBooks
8 q.SelectString="EXEC GET_PROJECT_JY '" & _t1 & "','" & Vars("_jxlv_prdno") & "','" & Date.Now() & "','" & s & "'"
9 q.Build
10 ''MessageBox.Show("查询了表成功")
11 Dim i As Integer
12 i=Tables("金相临时").Cols.Count
13 Vars("_int_tbcount")=i
14 Dim j As Integer
15 For j=0 To i-1
16 Tables("金相临时").Cols(j).RecordRowHeight=2
17 Next
18 ''Tables("金相临时").Cols(0).RecordRowHeight=2
19 Dim rgd As WinForm.RecordGrid = e.Form.Controls("RCDG_R")
20 Tables("金相临时").AllowEdit=True
21 rgd.Table=Tables("金相临时")
22 rgd.Build
23 Connections(_strBooks).Commit()
24 catch ex As exception
25 Connections(_strBooks).Rollback
26 MessageBox.Show("错误")
27 Return
28 End try

 回到顶部
帅哥哟,离线,有人找我吗?
18523500398
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1150 威望:0 精华:0 注册:2018/9/17 11:16:00
  发帖心情 Post By:2018/12/24 11:40:00 [只看该作者]

上面发的是代码,如果用sqlcommand执行存储过程的话,我的临时表又无法产生了,然后后面的流程就无法执行了

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/24 11:44:00 [只看该作者]

以下是引用18523500398在2018/12/24 11:40:00的发言:
上面发的是代码,如果用sqlcommand执行存储过程的话,我的临时表又无法产生了,然后后面的流程就无法执行了

 

不是可生成dt临时表么?通过sqlcommand的ExecuteReader。得到的表格基本一样使用。


 回到顶部
总数 12 1 2 下一页