executeUpdate

中国机械与配件网2410

本篇文章给大家谈谈executeUpdate,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

executeupdate和execute的区别

你好,区别如下:

Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。

方法executeQuery

用于产生单个结果集的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法是 executeQuery。这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。

方法executeUpdate

用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。

使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。实际上,相对于创建表来说,executeUpdate 用于更新表的时间更多,因为表只需要创建一次,但经常被更新。

方法execute:

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

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

因为方法 execute 处理非常规情况,所以获取其结果需要一些特殊处理并不足为怪。例如,假定已知某个过程返回两个结果集,则在使用方法 execute 执行该过程后,必须调用方法 getResultSet 获得第一个结果集,然后调用适当的 getXXX 方法获取其中的值。要获得第二个结果集,需要先调用 getMoreResults 方法,然后再调用 getResultSet 方法。如果已知某个过程返回两个更新计数,则首先调用方法 getUpdateCount,然后调用 getMoreResults,并再次调用 getUpdateCount。

对于不知道返回内容,则情况更为复杂。如果结果是 ResultSet 对象,则方法 execute 返回 true;如果结果是 Java int,则返回 false。如果返回 int,则意味着结果是更新计数或执行的语句是 DDL 命令。在调用方法 execute 之后要做的第一件事情是调用 getResultSet 或 getUpdateCount。调用方法 getResultSet 可以获得两个或多个 ResultSet 对象中第一个对象;或调用方法 getUpdateCount 可以获得两个或多个更新计数中第一个更新计数的内容。

当 SQL 语句的结果不是结果集时,则方法 getResultSet 将返回 null。这可能意味着结果是一个更新计数或没有其它结果。在这种情况下,判断 null 真正含义的唯一方法是调用方法 getUpdateCount,它将返回一个整数。这个整数为调用语句所影响的行数;如果为 -1 则表示结果是结果集或没有结果。如果方法 getResultSet 已返回 null(表示结果不是 ResultSet 对象),则返回值 -1 表示没有其它结果。也就是说,当下列条件为真时表示没有结果(或没有其它结果):

((stmt.getResultSet() == null) (stmt.getUpdateCount() == -1))

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

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

((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; // 没有其它结果

java execute,executeQuery和executeUpdate之间的区别

java中execute,executeQuery和executeUpdate之间的区别如下:

1、总的概括如下:

executeQuery()—直接从数据库中获取数据,只能执行select语句

executeUpdate()—对数据库进行insert,delete或者update

execute()—所有对数据库的操作都可以使用此方法

2、具体区别如下:

executeQuery() :通常用于读取数据库的内容。以结果集的形式输出数据。一般使用于SELECT语句。

executeUpdate() — 通常用于改变数据库。一般来说DROP TABLE或数据库,插入到表,更新表,从TABLE语句删除将在此使用。输出将在INT的形式。此int值表示受到查询的行数。

execute() — 如果用户不知道要用于执行SQL语句该方法,可以使用这种方法。这将返回一个布尔值。 TRUE表示结果是一个ResultSet,FALSE表示它有它表示受查询的行数的int值。

ps.executeUpdate(); 是什么意思?

是当成功插入数据到数据库时候,这个会返回一个大于1的数字,来表明数据成功插入库之中

sql注入发生的时间,sql注入发生的阶段在sql预编译阶段,当编译完成的sql不会产生sql注入,采用jdbc操作数据时候,preparedStatement 预编译对象会对传入sql进行预编译。

那么当传入id 字符串为 "update ft_proposal set id = 3;drop table ft_proposal;" 这种情况下就会导致sql注入删除ft_proposal这张表。

预编译语句

处理使用预编译语句之外,另一种实现方式可以采用存储过程,存储过程其实也是预编译的,存储过程是sql语句的集合,将所有预编译的sql语句编译完成后,存储在数据库上。

当传入的参数为3;drop table user;当执行时可以看见打印的sql语句为:select name from usre where id = ?;不管输入何种参数时,都可以防止sql注入,因为mybatis底层实现了预编译。

JAVA executeUpdate怎么用

statement

接口中有executeupdate(string

sql)方法发送sql

并返回执行成功的记录的条数

int

preparestatement是statement的子接口自己定义了方法executeupdate()

用于执行已发送的预编译的sql

并返回执行成功的记录的条数

int

一般都是用preparestatement

有预编译功能可以防止sql注入攻击

executeupdate和execute的区别?

主要区别: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()和executeUpdate(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比较方便。

我不是答的高质量,怎么老是把我归到高质量呢

关于executeUpdate和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。