java中执⾏Sql语句的Statement详细⽤法
statement-相关概述
Statement 对象⽤于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执⾏ SQL语句的包容
器:Statement、PreparedStatement(它从 Statement 继承⽽来)和CallableStatement(它从 PreparedStatement 继承⽽来)。它们都专⽤于发送特定类型的 SQL 语句:Statement 对象⽤于执⾏不带参数的简单 SQL 语句;PreparedStatement 对象⽤于执⾏带或不带 IN参数的预编译 SQL 语句;CallableStatement 对象⽤于执⾏对数据库已存储过程的调⽤。
Statement 接⼝提供了执⾏语句和获取结果的基本⽅法。PreparedStatement 接⼝添加了处理 IN 参数的⽅法;⽽CallableStatement 添加了处理 OUT 参数的⽅法。
有些 DBMS将已存储过程中的每条语句视为独⽴的语句;⽽另外⼀些则将整个过程视为⼀个复合语句。在启⽤⾃动提交时,这种差别就变得⾮常重要,因为它影响什么时候调⽤commit ⽅法。在前⼀种情况中,每条语句单独提交;在后⼀种情况中,所有语句同时提交。
sql中delete用法1、创建 Statement 对象
建⽴了到特定数据库的连接之后,就可⽤该连接发送 SQL 语句。Statement 对象⽤ Connection 的⽅法createStatement 创建,如下列代码段中所⽰:
Connection con = Connection(url, "sunny","");
Statement stmt = ateStatement();
为了执⾏ Statement 对象,被发送到数据库的 SQL 语句将被作为参数提供给 Statement 的⽅法:
ResultSet rs = uteQuery("SELECT a, b, c FROMTable2");
2、使⽤ Statement 对象执⾏语句
Statement 接⼝提供了三种执⾏ SQL 语句的⽅法:executeQuery、executeUpdate 和execute。使⽤哪⼀个⽅法由 SQL 语句所产⽣的内容决定。
⽅法 executeQuery ⽤于产⽣单个结果集的语句,例如 SELECT 语句。
⽅法 executeUpdate ⽤于执⾏ INSERT、UPDATE 或 DELETE 语句以及 SQLDDL(数据定义语⾔)语句,例如 CREATE TABLE 和DROP TABLE。INSERT、UPDATE 或 DELETE语句的效果是修改表
中零⾏或多⾏中的⼀列或多列。executeUpdate 的返回值是⼀个整数,指⽰受影响的⾏数(即更新计数)。对于CREATE TABLE 或 DROP TABLE 等不操作⾏的语句,executeUpdate 的返回值总为零。
⽅法 execute⽤于执⾏返回多个结果集、多个更新计数或⼆者组合的语句。因为多数程序员不会需要该⾼级功能,所以本概述后⾯将在单独⼀节中对其进⾏介绍。
执⾏语句的所有⽅法都将关闭所调⽤的 Statement 对象的当前打开结果集(如果存在)。这意味着在重新执⾏ Statement对象之前,需要完成对当前 ResultSet 对象的处理。
应注意,继承了 Statement 接⼝中所有⽅法的 PreparedStatement 接⼝都有⾃⼰的executeQuery、executeUpdate 和 execute ⽅法。Statement 对象本⾝不包含 SQL语句,因⽽必须给 ute ⽅法提供 SQL 语句作为参数。PreparedStatement 对象并不将SQL 语句作为参数提供给这些⽅法,因为它们已经包含预编译 SQL 语句。CallableStatement 对象继承这些⽅法的PreparedStatement 形式。对于这些⽅法的 PreparedStatement 或 CallableStatement版本,使⽤查询参数将抛出 SQLException。
3、语句完成
当连接处于⾃动提交模式时,其中所执 ⾏的语句在完成时将⾃动提交或还原。语句在已执⾏且所有结
果返回时,即认为已完成。对于返回⼀个结果集的executeQuery ⽅法,在检索完 ResultSet 对象的所有⾏时该语句完成。对于⽅法executeUpdate,当它执⾏时语句即完成。但在少数调⽤⽅法 execute的情况中,在检索所有结果集或它⽣成的更新计数之后语句才完成。
4、关闭 Statement 对象
Statement 对象将由 Java 垃圾收集程序⾃动关闭。⽽作为⼀种好的编程风格,应在不需要 Statement对象时显式地关闭它们。这将⽴即释放 DBMS 资源,有助于避免潜在的内存问题。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。