以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- sql 异常捕捉,在报错的时候,建议加上错误的代码位置,方便用户定位问题 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=116745) |
-- 作者:qq121454970 -- 发布时间:2018/3/30 12:04:00 -- sql 异常捕捉,在报错的时候,建议加上错误的代码位置,方便用户定位问题 在使用狐表的时候,多多少少,会设计很多的sql语句在里面,可能sql里面的逻辑不严谨,会导致报一些语法错误,希望在报错的时候,能够提示出错代码的具体位置 比如下面这样的效果 现在报错的样式,是这样的,得满世界去找,太崩溃了 ![]() ![]() ![]() ====================现在的错误提示,是这样的==================== 以下内容为程序代码: 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编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/3/30 12:17:00 -- 把你生成的sql语句,拷贝到数据库那里运行,看报什么错呗。 |
-- 作者:qq121454970 -- 发布时间:2018/3/30 13:44:00 -- 以下是引用有点甜在2018/3/30 12:17:00的发言:
把你生成的sql语句,拷贝到数据库那里运行,看报什么错呗。 亲,如果知道发生错误的地方,那我早就修复了,问题现在是,是哪里的代码报错都找不出来,我怎么找sql语句呢 |
-- 作者:有点甜 -- 发布时间:2018/3/30 14:42:00 -- 以下是引用qq121454970在2018/3/30 13:44:00的发言:
亲,如果知道发生错误的地方,那我早就修复了,问题现在是,是哪里的代码报错都找不出来,我怎么找sql语句呢
1、你做什么操作的时候报错的?
2、做的这个操作,会触发什么事件和相关的事件?
3、在对应的代码那里,删除代码后逐步测试。 |
-- 作者:qq121454970 -- 发布时间:2018/3/30 16:24:00 -- 以下是引用有点甜在2018/3/30 14:42:00的发言:
1、你做什么操作的时候报错的?
2、做的这个操作,会触发什么事件和相关的事件?
3、在对应的代码那里,删除代码后逐步测试。 是我描述的有问题,还是我描述的太模糊了???
此问题,不是我引起的,应该是由用户不规范输入,导致运行异常。 但是用户直接忽略了该BUG存在,我是通过你们的异常监控捕捉的异常信息,存到数据库,用来备查的
我想通过错误信息,去检查那段代码,并进行修复。
但问题是:像这样的错误信息,我根本无从下手,这个项目,调用sql的地方,有500多处,我不可能一个一个的去查啊
重点来了,我只是想说:下次升级的时候,能否在报错的时候,把错误所在事件也提示出来
能像下面图片这样就好了
![]() ![]() [此贴子已经被作者于2018/3/30 16:24:46编辑过]
|
-- 作者:有点甜 -- 发布时间: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
|