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-11-27 交作业!
小孤心



import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestJDBC02 { public static void main(String[] args) { Connection c = null; Statement s = null; try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } //PreparedStatement 使用参数设置,可读性好,不易犯错 String sql="insert into hero values(null,?,?,?)"; try { c=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root","admin"); // 根据sql语句创建PreparedStatement s = c.createStatement(); // 不同1:execute可以执行查询语句 // 然后通过getResultSet,把结果集取出来 String sqlSelect = "select * from hero limit 0,5"; s.execute(sqlSelect); ResultSet rs = s.getResultSet(); while (rs.next()) { System.out.println(rs.getInt("id")+"\t"+rs.getString(2)+"\t"+rs.getFloat("hp")+"\t"+rs.getInt(4)); } } catch (SQLException e) { e.printStackTrace(); }finally { // 数据库的连接时有限资源,相关操作结束后,养成关闭数据库的好习惯 // 先关闭Statement if (s != null) try { s.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 后关闭Connection if (c != null) try { c.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestJDBC02 {
	public static void main(String[] args) {
		Connection c = null;
		Statement s = null;		
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		//PreparedStatement 使用参数设置,可读性好,不易犯错
		String sql="insert into hero values(null,?,?,?)";
		try {
			c=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root","admin");
			 // 根据sql语句创建PreparedStatement
			s = c.createStatement();
			
			 // 不同1:execute可以执行查询语句
            // 然后通过getResultSet,把结果集取出来
            String sqlSelect = "select * from hero limit 0,5";
  
            s.execute(sqlSelect);
            ResultSet rs = s.getResultSet();
            while (rs.next()) {
                System.out.println(rs.getInt("id")+"\t"+rs.getString(2)+"\t"+rs.getFloat("hp")+"\t"+rs.getInt(4));
            }
 
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			// 数据库的连接时有限资源,相关操作结束后,养成关闭数据库的好习惯
			// 先关闭Statement
			if (s != null)
				try {
					s.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			// 后关闭Connection
			if (c != null)
				try {
					c.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
	}	
}

							






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





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








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




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




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

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

上传截图