前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手贱玩坑自己填:ExecuteNonQuery返回-1

手贱玩坑自己填:ExecuteNonQuery返回-1

作者头像
崔文远TroyCui
发布2021-08-19 10:27:27
7210
发布2021-08-19 10:27:27
举报
文章被收录于专栏:远在上海远在上海

最近手贱,将Oracle.ManagedDataAccess升级到19.12.0,原来运行正常(其实有问题)的代码忽然出问题了。

后来一条是发现所有BEGIN END包裹的UPDATE语句,现在都是返回-1,而不是想要的影响的行数了。

其实我所使用的DotNet.Util的底层类库中ExecuteNonQuery();默认值就是-1.

代码语言:javascript
复制
var result = -1;

并且呢,本来ExecuteNonQuery()在执行UPDATE、INSERT以及DELETE语句时,返回值为该命令所影响的行数。这是这个方法的建议用法。

如果用这个执行SELECT语句,不会返回影响的行数或者记录,而返回-1,不论查询结果有没有记录都会返回-1。

同理,如果执行任何CREATE、ALTER、TRUNCATE创建/修改/删除表、字段、索引等语句,同样返回-1。

既然明白了原理,但还得使用一次性多个SQL一起执行,没办法的办法,只能硬着头皮,用个馊主意。

针对BEGIN END的调用,明确知道包含BEGIN END的,就返回一个绝对值,代表成功了。

代码语言:javascript
复制
//return result;
//return -1 if BEGIN END
return Math.Abs(result);

我知道这样做不对,不好。

谁有好办法,分享下。

比方说现在EF里面的做法,或者ORM这些怎么处理的?

等我有时间去研究下SqlSugar或者FreeSql这类ORM看看他们怎么处理的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021年8月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档