本文共 2568 字,大约阅读时间需要 8 分钟。
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视频课程。
转载地址:http://frqsx.baihongyu.com/