`

JDBC中操作数据库的三个对象:Statement;PreparedStatement;CallableStatement

    博客分类:
  • JAVA
阅读更多
1、创建 Statement 对象

  建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。Statement 对象用 Connection 的方法 createStatement 创建,如下列代码段中所示:

Connection con = DriverManager.getConnection(url, "sunny", ""); 
Statement stmt = con.createStatement(); 


  为了执行 Statement 对象,被发送到数据库的 SQL 语句将被作为参数提供给 Statement 的方法:

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2"); 


  2、使用 Statement 对象执行语句

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

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

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

  方法 execute 用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能,所以本概述后面将在单独一节中对其进行介绍。

  执行语句的所有方法都将关闭所调用的 Statement 对象的当前打开结果集(如果存在)。这意味着在重新执行 Statement 对象之前,需要完成对当前 ResultSet 对象的处理。

  应注意,继承了 Statement 接口中所有方法的 PreparedStatement 接口都有自己的 executeQuery、executeUpdate 和 execute 方法。Statement 对象本身不包含 SQL 语句,因而必须给 Statement.execute 方法提供 SQL 语句作为参数。PreparedStatement 对象并不将 SQL 语句作为参数提供给这些方法,因为它们已经包含预编译 SQL 语句。CallableStatement 对象继承这些方法的 PreparedStatement 形式。对于这些方法的 PreparedStatement 或 CallableStatement 版本,使用查询参数将抛出 SQLException。

  3、语句完成

  当连接处于自动提交模式时,其中所执行的语句在完成时将自动提交或还原。语句在已执行且所有结果返回时,即认为已完成。对于返回一个结果集的 executeQuery 方法,在检索完 ResultSet 对象的所有行时该语句完成。对于方法 executeUpdate,当它执行时语句即完成。但在少数调用方法 execute 的情况中,在检索所有结果集或它生成的更新计数之后语句才完成。

   概述

  Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执行 SQL 语句的包容器:Statement、 PreparedStatement(它从 Statement 继承而来)和 CallableStatement(它从 PreparedStatement 继承而来)。它们都专用于发送特定类型的 SQL 语句: Statement 对象用于执行不带参数的简单 SQL 语句;PreparedStatement 对象用于执行带或不带 IN 参数的预编译 SQL 语句;CallableStatement 对象用于执行对数据库已存储过程的调用。

  Statement 接口提供了执行语句和获取结果的基本方法。PreparedStatement 接口添加了处理 IN 参数的方法;而 CallableStatement 添加了处理 OUT 参数的方法。

有些 DBMS 将已存储过程中的每条语句视为独立的语句;而另外一些则将整个过程视为一个复合语句。在启用自动提交时,这种差别就变得非常重要,因为它影响什么时候调用 commit 方法。在前一种情况中,每条语句单独提交;在后一种情况中,所有语句同时提交。

  4、关闭 Statement 对象

  Statement 对象将由 Java 垃圾收集程序自动关闭。而作为一种好的编程风格,应在不需要 Statement 对象时显式地关闭它们。这将立即释放 DBMS 资源,有助于避免潜在的内存问题。
分享到:
评论

相关推荐

    jdbc连接数据库的方式2

    如果利用Oracle的面向对象的技术,可以通过创建一个新的数据库对象类型在数据库中模仿其数据和操作,然后使用JPublisher等工具生成自己的Java bean类。如果使用这种方式,不但Java应用程序可以使用应用软件的对象...

    JDBC 3.0数据库开发与设计

    6.4 JavaBeans操作数据库实例 6.5 三层结构开发数据库的优缺点 6.6 本章小结 第7章 综合开发实例分析 7.1 UML要点与应用 7.1.1 UML定义及组织 7.1.2 UML的概念模型 7.1.3 UML的应用 7.2 用UML建模开发网上...

    java jbdc 技术编程文档

    Java的数据库连接编程(JDBC)技术 [知识要点]:JDBC、JDBC的工作原理,访问数据库的方法、Statement、PreparedStatement、CallableStatement,ResultSet等对象的编程使用

    JDBC笔记 JDBC笔记

    java.sql.PreparedStatement 继承Statement接口,表示预编译的SQL语句的对象,SQL语句被预编译并且存储在PreparedStatement对象中。然后可以使用此对象高效地多次执行该语句。 java.sql.CallableStatement 用来...

    JDBC入门学习简单教程

    JDBC学习的简单教程,包括如何连接数据库,使用Statement,PreparedStatement,CallableStatement,元数据等。 主要用于教学和自学

    jdbc基础和参考

    Hibernate中对象的三种状态: Transient(瞬态): 1.由new关键字创建 2.没有和Session进行关联的 3.数据库中没有对应的记录存在 4.操作不会影响数据库中的数据 Persistent(持久态): 1.和Session之间有关联 2.在...

    Java数据库编程宝典3

    第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 1.1.4 主键 1.1.5 外键 1.1.6 关系 1.1.7 视图 1.1.6 范式...

    Java_JDBC由浅入深

    第十四节 编写一个简单的数据库连接池 74 14.1 为什么要使用数据库连接池 74 14.2 数据库连接池雏形 74 14.2 数据库连接池优化 77 14.2.1 对线程池加锁 77 14.2.2 连接不够用时抛出异常 77 14.3 数据库连接池之代理...

    Java数据库编程宝典2

    第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 1.1.4 主键 1.1.5 外键 1.1.6 关系 1.1.7 视图 1.1.6 范式...

    Java数据库编程宝典1

    第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 1.1.4 主键 1.1.5 外键 1.1.6 关系 1.1.7 视图 1.1.6 范式...

    Java数据库编程宝典4

    第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 1.1.4 主键 1.1.5 外键 1.1.6 关系 1.1.7 视图 1.1.6 范式...

    java面向对象核心知识点,独门大法

    每一个知识点的讲解,都会包含语法,语法个数如何定义,然后语法下面就是使用方式,能够起到活学活用的帮助,比如在讲解jdbc的时候我会列举出来 Statement(执行简单的sql语句,不支持预编译) PreparedStatement...

    JDBC执行SQL操作.docx

    利用Statement实例通过执行静态SELECT语句完成,也可以利用PreparedStatement实例通过执行SELECT语句进行完成,还可以利用CallableStatement实例通过执行存储过程来完成。 (1)利用Statement实例通过执行静态...

    java经典面试2010集锦100题(不看你后悔)

    C) Java中的封装就是将对象的数据和操作数据的方法相结合,通过方法将对象的数据和实现细节保护起来。 D) Java语言中的多态的含义可以表达为:对外一个接口,内部多种实现。Java语言支持两种多态:运行时多态和编译...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    5.1.2 封装对象操作流程 128 5.1.3 封装对象内部数据 131 5.2 类语法细节 134 5.2.1 public权限修饰 134 5.2.2 关于构造函数 136 5.2.3 构造函数与方法重载 137 5.2.4 使用this 139 5.2.5 static类...

    java业务层框架开发ibatis(java源码)

    public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException { return null;} public CallableStatement prepareCall...

Global site tag (gtag.js) - Google Analytics