博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql statement讲解_Statement接口详解
阅读量:5898 次
发布时间:2019-06-19

本文共 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/

你可能感兴趣的文章
MapInfo 文件格式说明
查看>>
JAVA 之 继承
查看>>
51Nod 1090 3个数和为0(暴力)
查看>>
cocos2d视图zoom缩放
查看>>
iPhone 制作lib
查看>>
iOS后台播放背景音乐文件(转载)
查看>>
ios专题 - openSSL
查看>>
数据库备份与恢复
查看>>
黄聪:入侵必读:网警如何找到你
查看>>
Python 正则表达式应用【转载】
查看>>
fuz 2159 WuYou
查看>>
Nginx页面图片错误 ERR_CONTENT_LENGTH_MISMATCH
查看>>
SQL Server-表表达式基础回顾(二十四)
查看>>
DAO层,Service层,Controller层,View层
查看>>
Developing a Service Provider using Java API(Service Provider Interface)(转)
查看>>
LINQ高级编程 笔记
查看>>
pthread_cancel 相关
查看>>
Ubuntu上CUDA和CUDNN的安装
查看>>
VI一个终端编辑多个文件的命令
查看>>
.gitignore无效的情况的原因和处理方法
查看>>