动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

Statement接口详解

07-28 17:26 314浏览
举报 T字号
  • 大字
  • 中字
  • 小字

Statement接口Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。java.sql.Statement接口用于执行静态的SQL语句并返回执行结果

在默认情况下,同一时间每个Statement接口只能打开一个ResultSet 对象。因此,如果读取一个ResultSet 对象与读取另一个对象交叉,则这两个对象必须是由不同的Statement接口对应的statement对象生成的。如果存在某个语句的打开的当前ResultSet 对象,则Statement接口中的所有执行方法都会隐式关闭它。 

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

我们要使用Statement接口,第一步肯定是创建一个Statement对象了。我们需要使用 Connection 对象的 createStatement() 方法进行创建。

Statement stmt = null;

try {

   stmt = conn.createStatement( );

   . . .

}

catch (SQLException e) {

   . . .

}

finally {

   . . .

}

正如关闭一个Connection对象来释放数据库连接资源,出于同样的原因,也应该关闭Statement对象。

Statement stmt = null;

try {

     stmt = conn.createStatement( );

   . . .

}

catch (SQLException e) {

   . . .

}

finally {

   stmt.close();

}

Statement对象处理sql语句的三种方法:

 

boolean  execute(sql语句):如果检索到ResultSet对象(结果集)返回true,多于用数据库的建立和表格的创建。

int executUpdate(sql语句):返回表格受影响的实体数,多用于表格的数据的插入、更新、删除。

ResultSet  executeQuery:返回结果集,多用于查询操作,查询操作无论有没结果都会返回结果集。

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

Statement接口使用Demo:

package cn.woniuxueyuan.mysqldemo;

 

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

/**

 * 使用Statement对象处理数据库

 * @author Administrator

 *

 */

public class StatmentDemo {

public static void main(String[] args) {

Connection con = msyqlTest.ConDemo();

Statement st = null;

try {

/*静态工厂创建Statement实例*/

st = con.createStatement();

/* String select = "select * from student;"; */

String select = "UPDATE student SET sex='女' WHERE `name` ='张三'";

/* execute()方法有结果集返回true,查询操作无论是否有数据都会返回true */

boolean se = st.execute(select);

if (se) {

/* 获取结果集 */

ResultSet set = st.getResultSet();

/* 处理结果集 */

while (set.next()) {

int id = set.getInt("s_id");

String name = set.getString("name");

System.out.println(name + id);

}

} else {

/* 返回受影响行数 */

System.out.println(st.getUpdateCount());

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

try {

st.close();

con.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

Statement 对象将由 Java 垃圾收集程序自动关闭。而作为一种好的编程风格,应在不需要 Statement 对象时显式地关闭它们。这将立即释放 DBMS 资源,有助于避免潜在的内存问题。我们在java开发中也应该注意这样的细节,细节注定成败,能有效的帮助我们减少不必要的错误,提高编程质量更好学习Statement 知识,可随时关注java视频课程

0人推荐
共同学习,写下你的评论
0条评论
上善若水
程序员上善若水

16篇文章贡献85593字

作者相关文章更多>

推荐相关文章更多>

MySQL开发规范

达芬奇09-04 11:38

必须掌握的30种SQL语句优化

不写代码你养我啊08-23 11:30

ES(Elasticsearch)支持PB级全文搜索引擎入门教程

HelloWorld09-29 17:28

Java面试中的hadoop面试题及答案整理

兔子06-15 17:15

数据库分类之速成篇

呵呵呀06-17 18:54

发评论

举报

0/150

取消