mysql statement讲解_Statement接口详解

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视频课程。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值