how2j.cn


工具版本兼容问题
execute与executeUpdate的区别

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



6分11秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



步骤 1 : 相同点   
步骤 2 : 不同点   
步骤 3 : 练习-分页查询   
步骤 4 : 答案-分页查询   

步骤 1 :

相同点

executeexecuteUpdate的相同点:都可以执行增加,删除,修改
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class TestJDBC { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "admin"); Statement s = c.createStatement();) { String sqlInsert = "insert into Hero values (null,'盖伦',616,100)"; String sqlDelete = "delete from Hero where id = 100"; String sqlUpdate = "update Hero set hp = 300 where id = 100"; // 相同点:都可以执行增加,删除,修改 s.execute(sqlInsert); s.execute(sqlDelete); s.execute(sqlUpdate); s.executeUpdate(sqlInsert); s.executeUpdate(sqlDelete); s.executeUpdate(sqlUpdate); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
步骤 2 :

不同点

不同1:
execute可以执行查询语句
然后通过getResultSet,把结果集取出来
executeUpdate不能执行查询语句
不同2:
execute返回boolean类型,true表示执行的是查询语句,false表示执行的是insert,delete,update等等
executeUpdate返回的是int,表示有多少条数据受到了影响
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestJDBC { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "admin"); Statement s = c.createStatement();) { // 不同1:execute可以执行查询语句 // 然后通过getResultSet,把结果集取出来 String sqlSelect = "select * from hero"; s.execute(sqlSelect); ResultSet rs = s.getResultSet(); while (rs.next()) { System.out.println(rs.getInt("id")); } // executeUpdate不能执行查询语句 // s.executeUpdate(sqlSelect); // 不同2: // execute返回boolean类型,true表示执行的是查询语句,false表示执行的是insert,delete,update等等 boolean isSelect = s.execute(sqlSelect); System.out.println(isSelect); // executeUpdate返回的是int,表示有多少条数据受到了影响 String sqlUpdate = "update Hero set hp = 300 where id < 100"; int number = s.executeUpdate(sqlUpdate); System.out.println(number); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
步骤 3 :

练习-分页查询

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
使用execute方式,而不是executeQuery方式完成练习 练习-分页查询
步骤 4 :

答案-分页查询

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

1分27秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)


package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestJDBC { public static void list(int start, int count) { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root", "admin"); Statement s = c.createStatement();) { String sql = "select * from hero limit " + start + "," + count; boolean isQuery = s.execute(sql); if (isQuery) { // 执行查询语句,并把结果集返回给ResultSet ResultSet rs = s.getResultSet(); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString(2); float hp = rs.getFloat("hp"); int damage = rs.getInt(4); System.out.printf("%d\t%s\t%f\t%d%n", id, name, hp, damage); } } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { list(10, 5); } }


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-08-06 ResultSet是否是一个流,如果是一个流的话,是否要关闭这个流呀
何处有所栖
是不是能直接把所有的代码直接敲进try()里面,不能的话,那ResultSet怎么定义在小括号里








答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2018-04-26 用Statement 的话,不是sql语句必须要字符串拼接吗?为啥这里没有?
PhilJava
用Statement 的话,不是sql语句必须要字符串拼接吗?为啥这里没有? Statement s = c.createStatement();) { String sqlInsert = "insert into Hero values (null,'盖伦',616,100)"; String sqlDelete = "delete from Hero where id = 100"; String sqlUpdate = "update Hero set hp = 300 where id = 100"; // 相同点:都可以执行增加,删除,修改 s.execute(sqlInsert); s.execute(sqlDelete);




1 个答案

liutt-521 答案时间:2018-05-12
不需要啊 只要你的SQL语句是正确的就可以 你可以在你的MySQL中先试一下你的sql语句是不是正确。 是正确的怎么写都OK自己喜欢那种方式就用哪种方式写




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2018-04-26 用Statement 的话,不是sql语句必须要字符串拼接吗?为啥这里没有?
2018-01-16 getResultSet()和executeQuery()
2017-12-07 关于 Statement 和 PreparedStatement




提问之前请登陆
关于 JAVA 中级-JDBC-execute executeUpdate 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 620943819
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图