Foxtable(狐表)用户栏目专家坐堂 → sql 异常捕捉,在报错的时候,建议加上错误的代码位置,方便用户定位问题


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

主题:sql 异常捕捉,在报错的时候,建议加上错误的代码位置,方便用户定位问题

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


加好友 发短信
等级:四尾狐 帖子:880 积分:9005 威望:0 精华:3 注册:2012/4/22 18:06:00
sql 异常捕捉,在报错的时候,建议加上错误的代码位置,方便用户定位问题  发帖心情 Post By:2018/3/30 12:04:00 [只看该作者]

在使用狐表的时候,多多少少,会设计很多的sql语句在里面,可能sql里面的逻辑不严谨,会导致报一些语法错误,希望在报错的时候,能够提示出错代码的具体位置

比如下面这样的效果

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

现在报错的样式,是这样的,得满世界去找,太崩溃了图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看

====================现在的错误提示,是这样的====================

以下内容为程序代码:

1 System.Data.OleDb.OleDbException (0x80040E14): ',' 附近有语法错误。
2 ',' 附近有语法错误。
3 at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
4 at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
5 at Foxtable.SQLCommand.ExecuteNonQuery()


以下内容为程序代码:

1 System.Data.OleDb.OleDbException (0x80040E57): 语句已终止。
2 将截断字符串或二进制数据。
3 at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
4 at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
5 at Foxtable.SQLCommand.ExecuteNonQuery()

[此贴子已经被作者于2018/3/30 12:06:27编辑过]

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


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

把你生成的sql语句,拷贝到数据库那里运行,看报什么错呗。

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


加好友 发短信
等级:四尾狐 帖子:880 积分:9005 威望:0 精华:3 注册:2012/4/22 18:06:00
  发帖心情 Post By:2018/3/30 13:44:00 [只看该作者]

以下是引用有点甜在2018/3/30 12:17:00的发言:
把你生成的sql语句,拷贝到数据库那里运行,看报什么错呗。

亲,如果知道发生错误的地方,那我早就修复了,问题现在是,是哪里的代码报错都找不出来,我怎么找sql语句呢


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


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

以下是引用qq121454970在2018/3/30 13:44:00的发言:

亲,如果知道发生错误的地方,那我早就修复了,问题现在是,是哪里的代码报错都找不出来,我怎么找sql语句呢

 

1、你做什么操作的时候报错的?

 

2、做的这个操作,会触发什么事件和相关的事件?

 

3、在对应的代码那里,删除代码后逐步测试。


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


加好友 发短信
等级:四尾狐 帖子:880 积分:9005 威望:0 精华:3 注册:2012/4/22 18:06:00
  发帖心情 Post By:2018/3/30 16:24:00 [只看该作者]

以下是引用有点甜在2018/3/30 14:42:00的发言:

 

1、你做什么操作的时候报错的?

 

2、做的这个操作,会触发什么事件和相关的事件?

 

3、在对应的代码那里,删除代码后逐步测试。

是我描述的有问题,还是我描述的太模糊了???

 

此问题,不是我引起的,应该是由用户不规范输入,导致运行异常。

但是用户直接忽略了该BUG存在,我是通过你们的异常监控捕捉的异常信息,存到数据库,用来备查的

 

我想通过错误信息,去检查那段代码,并进行修复。

 

但问题是:像这样的错误信息,我根本无从下手,这个项目,调用sql的地方,有500多处,我不可能一个一个的去查啊

 

重点来了,我只是想说:下次升级的时候,能否在报错的时候,把错误所在事件也提示出来

 

能像下面图片这样就好了

 


图片点击可在新窗口打开查看此主题相关图片如下:20183301233311127.gif
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/3/30 16:24:46编辑过]

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


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

测试了一下,目前没有办法。看以后的版本有没有改进的机会吧。

 

就目前而言,你在执行sql语句之前,使用一个变量记录执行的sql语句,如

 

vars("sql") = "insert into {表A} ([_Identify],第一列) values(999, '123')"

vars("事件") = System.Reflection.MethodBase.GetCurrentMethod().name

 

当报错的时候,获取这两个变量出来,记录到表格去。

 

或者是,使用事务捕捉错误 http://www.foxtable.com/webhelp/scr/2933.htm

 

 


 回到顶部