JDBC API报错:ResultSet is from UPDATE. No Data

Table of Contents

昨天在调用存储mysql的存储过程的时候,没有“select”返回结果集,然后报了这么一个错误(如果返回结果集就不会报错),一开始感觉莫名奇妙的。然后就开始baidu一下错误,发现国内的论坛或博客上对这个问题都是描述个现象(那个现象我也知道呀
(┬_┬)),基本没有解决方案。类似以下回答:

————————————————————————————————
这里写图片描述

————————————————————————————————
最后,去stackoverflow上搜索一下:
[http://stackoverflow.com/questions/32682916/mysql-java-sql-sqlexception- resultset-is-from-update-no- data](http://stackoverflow.com/questions/32682916/mysql-java-sql-sqlexception- resultset-is-from-update-no-data)
这里写图片描述

调用存储过程的时候,要用execute(),不能用executeQuery(),突然想起之前学习JDBC的时候,只会用executeQuery做查询,怎么昨天就用来调用存储过程了呢?久不使用就会生疏呀~~

那为什么使用executeQuery(),没有返回结果集,不是报空指针异常,而是报上面那个错呢?
API文档里面有说明:
这里写图片描述
所以说,用executeQuery()始终会返回ResultSet对象,而不会返回null。

如果我们确切的知道要使用查询语句的时候,我们可以直接使用executeQuery();

如果是调用存储过程的话,就使用execute()。然后通过以下方法得到ResultSet:getResultSet();
这里写图片描述
然后判断ResultSet是否为null,不为null才可以执行ResultSet.next(),否则不执行。

0 评论

发表评论

精品游戏◆乐于分享


Title