> 文章列表 > executeupdate

executeupdate

executeupdate

很多人对executeupdate不是很了解那具体是什么情况呢,现在让我们一起来瞧瞧吧!

1、你好,区别如下:Statement 接口提供了三种执行 SQL 语句方法:executeQuery、executeUpdate 和 execute。

2、使用哪一个方法由 SQL 语句所产生的内容决定。

3、 方法executeQuery 用于产生单个结果集的语句,例如 SELECT 语句。

4、 被使用最多的执行 SQL 语句的方法是 executeQuery。

5、这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。

6、 方法executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。

7、INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。

8、executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。

9、对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。

10、 使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。

11、创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。

12、你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。

13、实际上,相对于创建表来说,executeUpdate 用于更新表的时间更多,因为表只需要创建一次,但经常被更新。

14、 方法execute: 用于执行返回多个结果集、多个更新计数或二者组合的语句。

15、因为多数程序员不会需要该高级功能 execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。

16、当执行某个已存储过程 或动态执行未知 SQL 字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况,尽管这种情况很少见。

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

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

19、要获得第二个结果集,需要先调用 getMoreResults 方法,然后再调用 getResultSet 方法。

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

21、 对于不知道返回内容,则情况更为复杂。

22、如果结果是 ResultSet 对象,则方法 execute 返回 true;如果结果是 Java int,则返回 false。

23、如果返回 int,则意味着结果是更新计数或执行的语句是 DDL 命令。

24、在调用方法 execute 之后要做的第一件事情是调用 getResultSet 或 getUpdateCount。

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

26、 当 SQL 语句的结果不是结果集时,则方法 getResultSet 将返回 null。

27、这可能意味着结果是一个更新计数或没有其它结果。

28、在这种情况下,判断 null 真正含义的唯一方法是调用方法 getUpdateCount,它将返回一个整数。

29、这个整数为调用语句所影响的行数;如果为 -1 则表示结果是结果集或没有结果。

30、如果方法 getResultSet 已返回 null(表示结果不是 ResultSet 对象),则返回值 -1 表示没有其它结果。

31、也就是说,当下列条件为真时表示没有结果(或没有其它结果): ((stmt.getResultSet() == null) && (stmt.getUpdateCount() == -1)) 如果已经调用方法 getResultSet 并处理了它返回的 ResultSet 对象,则有必要调用方法 getMoreResults 以确定是否有其它结果集或更新计数。

32、如果 getMoreResults 返回 true,则需要再次调用 getResultSet 来检索下一个结果集。

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

34、 当 getMoreResults 返回 false 时,它表示该 SQL 语句返回一个更新计数或没有其它结果。

35、因此需要调用方法 getUpdateCount 来检查它是哪一种情况。

36、在这种情况下,当下列条件为真时表示没有其它结果: ((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1)) 下面的代码演示了一种方法用来确认已访问调用方法 execute 所产生的全部结果集和更新计数: stmt.execute(queryStringWithUnknownResults); while (true) { int rowCount = stmt.getUpdateCount(); if (rowCount > 0) { // 它是更新计数 System.out.println(\"Rows changed = \" + count); stmt.getMoreResults(); continue; } if (rowCount == 0) { // DDL 命令或 0 个更新 System.out.println(\" No rows changed or statement was DDL command\"); stmt.getMoreResults(); continue; } // 执行到这里,证明有一个结果集 // 或没有其它结果 ResultSet rs = stmt.getResultSet; if (rs != null) { . . . // 使用元数据获得关于结果集列的信息 while (rs.next()) { . . . // 处理结果 stmt.getMoreResults(); continue; } break; // 没有其它结果主要区别:execute:执行给定的 SQL 语句,该语句可能返回多个结果。

37、executeUpdate:执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)一、方法executeUpdate:用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句。

38、executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。

39、对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。

40、 2、使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。

41、创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。

42、你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。

43、二、方法execute: 用于执行返回多个结果集、多个更新计数或二者组合的语句。

44、因为多数程序员不会需要该高级功能 。

45、2、execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。

46、当执行某个已存储过程 或动态执行未知 SQL 字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况,尽管这种情况很少见。

47、Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。

48、使用哪一个方法由 SQL 语句所产生的内容决定。

49、方法executeUpdate  用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。

50、INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。

51、executeUpdate 的返回值是一个整数(int),指示受影响的行数(即更新计数)。

52、对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。

53、  如:  //加载数据库驱动  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。

54、如果执行后第一个结果是ResultSet,则返回true,否则返回false。

55、但它执行SQL语句时比较麻烦,通常我们没有必要使用execute方法来执行SQL语句,而是使用executeQuery或executeUpdate更适合,但如果在不清楚SQL语句的类型时则只能使用execute方法来执行该SQL语句了。

56、  如:  //加载驱动  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方法执行返回的都是布尔值。

57、executeupdate返回的都是int整数类型。

58、execute方法在执行SQL语句的时候比较麻烦,而executeupdate比较方便。

59、Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。

60、使用哪一个方法由 SQL 语句所产生的内容决定。

61、 方法executeQuery 用于产生单个结果集的语句,例如 SELECT 语句。

62、 被使用最多的执行 SQL 语句的方法是 executeQuery。

63、这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。

64、 方法executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。

65、INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。

66、executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。

67、对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。

68、 使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。

69、创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。

70、你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。

71、实际上,相对于创建表来说,executeUpdate 用于更新表的时间更多,因为表只需要创建一次,但经常被更新。

72、 方法execute: 用于执行返回多个结果集、多个更新计数或二者组合的语句。

73、因为多数程序员不会需要该高级功能 execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。

74、当执行某个已存储过程 或动态执行未知 SQL 字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况,尽管这种情况很少见。

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

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

77、要获得第二个结果集,需要先调用 getMoreResults 方法,然后再调用 getResultSet 方法。

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

79、 对于不知道返回内容,则情况更为复杂。

80、如果结果是 ResultSet 对象,则方法 execute 返回 true;如果结果是 Java int,则返回 false。

81、如果返回 int,则意味着结果是更新计数或执行的语句是 DDL 命令。

82、在调用方法 execute 之后要做的第一件事情是调用 getResultSet 或 getUpdateCount。

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

84、 当 SQL 语句的结果不是结果集时,则方法 getResultSet 将返回 null。

85、这可能意味着结果是一个更新计数或没有其它结果。

86、在这种情况下,判断 null 真正含义的唯一方法是调用方法 getUpdateCount,它将返回一个整数。

87、这个整数为调用语句所影响的行数;如果为 -1 则表示结果是结果集或没有结果。

88、如果方法 getResultSet 已返回 null(表示结果不是 ResultSet 对象),则返回值 -1 表示没有其它结果。

89、也就是说,当下列条件为真时表示没有结果(或没有其它结果): ((stmt.getResultSet() == null) && (stmt.getUpdateCount() == -1)) 如果已经调用方法 getResultSet 并处理了它返回的 ResultSet 对象,则有必要调用方法 getMoreResults 以确定是否有其它结果集或更新计数。

90、如果 getMoreResults 返回 true,则需要再次调用 getResultSet 来检索下一个结果集。

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

92、 当 getMoreResults 返回 false 时,它表示该 SQL 语句返回一个更新计数或没有其它结果。

93、因此需要调用方法 getUpdateCount 来检查它是哪一种情况。

94、在这种情况下,当下列条件为真时表示没有其它结果: ((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1)) 下面的代码演示了一种方法用来确认已访问调用方法 execute 所产生的全部结果集和更新计数: stmt.execute(queryStringWithUnknownResults); while (true) { int rowCount = stmt.getUpdateCount(); if (rowCount > 0) { // 它是更新计数 System.out.println(\"Rows changed = \" + count); stmt.getMoreResults(); continue; } if (rowCount == 0) { // DDL 命令或 0 个更新 System.out.println(\" No rows changed or statement was DDL command\"); stmt.getMoreResults(); continue; } // 执行到这里,证明有一个结果集 // 或没有其它结果 ResultSet rs = stmt.getResultSet; if (rs != null) { . . . // 使用元数据获得关于结果集列的信息 while (rs.next()) { . . . // 处理结果 stmt.getMoreResults(); continue; } break; // 没有其它结果。

本文【executeupdate】到此讲解完毕了,希望对大家有帮助。