主要区别:execute:执行给定的 SQL 语句,该语句可能返回多个结果。executeUpdate:执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)
一、方法executeUpdate:
1、用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
2、使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。
二、方法execute:
1、用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能 。
2、execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。当执行某个已存储过程 或动态执行未知 SQL 字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况,尽管这种情况很少见。
Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。
本回答被网友采纳方法executeUpdate
用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数(int),指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
如:
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//使用DriverManager获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","1234");
//使用Connection来创建一个Statment对象
Statement stmt = conn.createStatement();//执行DML语句,返回受影响的记录条数
return stmt.executeUpdate(sql);
>方法execute:
可用于执行任何SQL语句,返回一个boolean值,表明执行该SQL语句是否返回了ResultSet。如果执行后第一个结果是ResultSet,则返回true,否则返回false。但它执行SQL语句时比较麻烦,通常我们没有必要使用execute方法来执行SQL语句,而是使用executeQuery或executeUpdate更适合,但如果在不清楚SQL语句的类型时则只能使用execute方法来执行该SQL语句了。
如: //加载驱动
Class.forName(driver);
//获取数据库连接
conn = DriverManager.getConnection(url , user , pass);//使用Connection来创建一个Statment对象
stmt = conn.createStatement();
//执行SQL,返回boolean值表示是否包含ResultSetboolean hasResultSet = stmt.execute(sql);//如果执行后有ResultSet结果集
if (hasResultSet)
{
//获取结果集
rs = stmt.getResultSet();
//ResultSetMetaData是用于分析结果集的元数据接口ResultSetMetaData rsmd = rs.getMetaData();int columnCount = rsmd.getColumnCount();
//迭代输出ResultSet对象
while (rs.next())
{//依次输出每列的值
for (int i = 0 ; i < columnCount ; i++ )
{
System.out.print(rs.getString(i + 1) + "/t");}
System.out.print("/n");
}}
else{
System.out.println("该SQL语句影响的记录有" + stmt.getUpdateCount() + "条");}
两者区别具体表现:
execute方法执行返回的都是布尔值。
executeupdate返回的都是int整数类型。
execute方法在执行SQL语句的时候比较麻烦,而executeupdate比较方便。