executeUpdate()方法的使用

查看API看到关于数据库更新的方法executeUpdate(sql)返回值是int型的,也有形参;但是我在开发时遇到的插入语句都遵守executeUpdate(sql)... 查看API 看到关于数据库更新的方法 executeUpdate(sql) 返回值是int型的,也有形参;但是我在开发时遇到的插入语句都遵守 executeUpdate(sql) 的调用(有返回值和传实参),而删除和更新语句中直接是这样用的
PreparedStatement pre = con.prepareStatement(sql);
pre.executeUpdate();
............
............
// 可以看到既没有整形数据来接收executeUpdate()的返回值,又没有给executeUpdate()传实参;
这到底怎么理解啊?
展开
 我来答
问明6E
高粉答主

2019-06-15 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.7万
展开全部

方法executeUpdate

用于执行INSERT、UPDATE或DELETE语句以及SQLDDL(数据定义语言)语句,例如CREATETABLE和DROPTABLE。INSERT、UPDATE或DELETE语句的效果是修改表中零行或多行中的一列或多列。

executeUpdate的返回值是一个整数,指示受影响的行数(即更新计数)。对于CREATETABLE或DROPTABLE等不操作行的语句,executeUpdate的返回值总为零。

使用executeUpdate方法是因为在createTableCoffees中的SQL语句是DDL(数据定义语言)语句。创建表,改变表,删除表都是DDL语句的例子,要用executeUpdate方法来执行。也可以从它的名字里看出,方法executeUpdate也被用于执行更新表SQL语句。

扩展资料:

方法execute:

用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能

execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。当执行某个已存储过程或动态执行未知SQL字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况,尽管这种情况很少见。

因为方法execute处理非常规情况,所以获取其结果需要一些特殊处理并不足为怪。

例如,假定已知某个过程返回两个结果集,则在使用方法execute执行该过程后,必须调用方法getResultSet获得第一个结果集,然后调用适当的getXXX方法获取其中的值。要获得第二个结果集,需要先调用getMoreResults方法,然后再调用getResultSet方法。

如果已知某个过程返回两个更新计数,则首先调用方法getUpdateCount,然后调用getMoreResults,并再次调用getUpdateCount。

对于不知道返回内容,如果结果是ResultSet对象,则方法execute返回true;如果结果是Javaint,则返回false。

如果返回int,则意味着结果是更新计数或执行的语句是DDL命令。在调用方法execute之后要做的第一件事情是调用getResultSet或getUpdateCount。

调用方法getResultSet可以获得两个或多个ResultSet对象中第一个对象;或调用方法getUpdateCount可以获得两个或多个更新计数中第一个更新计数的内容。

1、getResultSet

返回null意味着不是结果集可以理解为是一个更新计数或没有其它结果

2、getUpdateCount

返回影响的行数-1表示结果是结果集或没有结果

如果已经调用方法getResultSet并处理了它返回的ResultSet对象,则有必要调用方法getMoreResults以确定是否有其它结果集或更新计数。如果getMoreResults返回true,则需要再次调用getResultSet来检索下一个结果集。

如上所述,如果getResultSet返回null,则需要调用getUpdateCount来检查null是表示结果为更新计数还是表示没有其它结果。

当getMoreResults返回false时,它表示该SQL语句返回一个更新计数或没有其它结果。因此需要调用方法getUpdateCount来检查它是哪一种情况。在这种情况下,当下列条件为真时表示没有其它结果:

((stmt.getMoreResults()==false)&&(stmt.getUpdateCount()==-1))。

参考资料:

百度百科——update

百度百科——ShellExecute

田桖兰VQ
推荐于2017-06-14 · TA获得超过591个赞
知道答主
回答量:45
采纳率:100%
帮助的人:53.1万
展开全部
statement 接口中有executeUpdate(String sql)方法发送sql 并返回执行成功的记录的条数 int
prepareStatement是statement的子接口自己定义了方法executeUpdate() 用于执行已发送的预编译的sql 并返回执行成功的记录的条数 int
一般都是用prepareStatement 有预编译功能可以防止sql注入攻击
追问
你第二段 “prepareStatement是statement的子接口自己定义了方法executeUpdate() 用于执行已发送的预编译的sql 并返回执行成功的记录的条数 int
” 中预编译的sql 是什么意思?怎么理解? 另外 “并返回执行成功的记录的条数 int” 这么说也是有返回值的了,但是为什么在开发中有时候没有整形数据来接收返回值,而是像我在问题中写的那样,直接在调用?
追答
预编译就是说在执行executeUpdate();时候,sql语句已经在数据库端了con.preparedStatement(sql) 就是发送sql了 当然了我个人是这样理解的
如果执行成功是有返回值得,但是这个返回值用处不大,比如我执行插入一行数据,返回值就是1,因为他成功的插入了一行数据,这个返回值你当然可以不接受,你可以接受一下并且打印出来看看是否如此
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-12-26
展开全部
并不是没有, con.prepareStatement(sql)这句语句的意思是已经在实例了对象查询语句,由于已经对sql语句实现了提前编译,executeUpdate();直接调用就可以,而不需要再次添加sql语句,其executeUdate()返回值可以使用int类型来接收,返回一个int类型的行数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我本热情
2019-12-21 · 能被别人需要是一种幸福
我本热情
采纳数:3777 获赞数:21498

向TA提问 私信TA
展开全部
你好,题目比较专业,
增、删、改 用executeUpdate()
返回值为int型,表示被影响的行数
在这里插入图片描述
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
谦卑且俊美灬爱侣9285
高粉答主

2021-01-10 · 醉心答题,欢迎关注
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式