【JDBC4.2】三、Statements

2024-05-31 22:58
文章标签 statements jdbc4.2

本文主要是介绍【JDBC4.2】三、Statements,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据库localhost:3306
DBname: test
表:student
这里写图片描述


本编博客包括Statement接口,以及它的子接口PreparedStatement和CallableStatement

Statement接口

Statement的获取

public class StatementTest {public static void main(String[] args) throws SQLException {Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC", "root", "123456");Statement statement = connection.createStatement();}
}

Statement的执行方法

如果是SQL查询语句,使用executeQuery()方法,返回一个ResultSet对象。
如果是DDL语句,修改性质的DML语句,使用executeUpdate(),返回修改的行数。
如果SQL语句未知,则使用execute()方法。

SQL语句类型备注Statement方法
查询语句SELECTexecuteQuery
修改语句INSERT、UPDATE或DELETE以及SQL DDL语句executeUpdate
返回多个ResultSet或多个UpdateCount或二者组合存储过程或未知SQLexecute

executeQuery方法

用法如下:

//...获取statement省略...ResultSet resultSet = statement.executeQuery("SELECT id,name,age FROM student");while (resultSet.next()){//todo ...
}

如果executeQuery执行的Sql没有返回一个ResultSet 对象,比如statement.executeQuery("INSERT INTO student('ABC123','Jack',12)");,则会抛出SQLException

executeUpdate方法

int rows1 = statement.executeUpdate("UPDATE student SET age=17 WHERE name='Li'");
int rows2 = statement.executeUpdate("DELETE FROM student WHERE name='Sam'");
//...

如果executeUpdate返回一个ResultSet 对象,则会抛出SQLException

execute方法

execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。当执行某个已存储过程或动态执行未知 SQL 字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况。
某些驱动可能不支持多个ResultSet,可以使用Connection#getMetaData()#supportsMultipleResultSets()查看是否支持。

关闭Statement

关闭Connection虽然会关闭它创建的所有Statement,但是一个良好的编程习惯是手动关闭Statement
关闭Statement则不会关闭它创建的ResultSet所持有的资源(ResultSet会关闭),直到GC。
最好的做法是依次关闭ResultSet,Statement,Connection

resultSet.close();
statement.close();
connection.close();
//完美!

PreparedStatement

PreparedStatement继承自Statement,具有设置SQL参数的能力。SQL语句能够被预编译,并且使用多次。它可以在SQL语句中使用“?”代替参数,执行的时候再指定。

创建一个PreparedStatement,并设置参数

String sql= "insert into student(id,name,age) values(?,?,?)"; 
ps=conn.prepareStatement(sql);
ps.setString(1, "1234ABCD"); 
ps.setString(2, "Mary"); 
ps.setInt(3, 13); 

使用setObject

ps.setObject(1,21,java.sql.Types.SHORT)//转换为SHORT
ps.setObject(1,21)//转换为默认的java.sql.Types.INTEGER

设置NULL参数

ps.setNull(2,java.sql.Types.VARCHAR)//设置varchar类型的参数威null

输出和输入数据描述

使用prepareStatement#getMetaData获取输出信息

使用prepareStatement#getParameterMetaData获取参数信息

CallableStatement

CallableStatement继承自PreparedStatement,用来执行存储过程并获取结果。

这篇关于【JDBC4.2】三、Statements的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1019277

相关文章

Can not issue data manipulation statements with executeQuery().

这里的报错信息现实的如下图: 、 就是如图的两端代码的问题,excuteQuery是查询语句,而我要调用的是更新的语句 executeQurery()改成excuteUpdate() 错误就改正了

performance_schema.events_statements_current

performance_schema.events_statements_current 是 MySQL 中 performance_schema 库中的一个表,它用于显示当前正在执行的 SQL 语句的性能事件。这个表提供了关于当前正在运行的 SQL 语句的实时信息,允许数据库管理员和开发者监控和分析 SQL 语句的性能。 以下是关于 performance_schema.events_stat

JDBC进化史--从JDBC1.0到JDBC4.2

JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface应用程序设计接口)。它由一些Java语言编写的类和界面组成。JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。 本文简单介绍了JDBC1.0--JDBC4.2的发展,简单介绍了每个版本的新特性

【JDBC4.2】JDBC中的Exception

JDBC中的异常类包括SQLException类和它的子类们。 1.SQLException SQLException包含下面信息: 信息项获取方法备注错误描述SQLException#getMessageSQLStateSQLException#getSQLStateerror codeSQLException#getMessagecauseSQLException#getCause递归获

【JDBC4.2】ResultSet

ResultSet用来从查询语句中获取结果。对ResultSet的操作是反应到数据库游标(cursor)上的。 1.ResultSet分类 ResultSet可从三方面分类,分别是Types,Concurrency ,Holdability ResultSet Types 从两个方面分类 1.操作的光标方式 2.数据库并发数据修改后ResultSet 的反馈。 ResultSet.TYP

【JDBC4.2】一、JDBC简介

注意:本编文章以下代码均为简写方式,无法执行,仅供参考 1. JDBC的由来 直接使用socket协议访问数据库 应用程序可以直接通过多种方式访问数据库,最普通的是通过socket访问数据库。以Mysql 为例:首先通过程序通过socket和数据库建立了TCP连接,把准备执行的SQL语句或命令封装成特定于Mysql 数据库的应用层数据包,发送给Mysql 数据库,Mysql数据库执行命令,

Mapped Statements collection does not contain value for ...

我的是: 已经定义了mapper的别名,然后具体mapper中的空间名,写的是全程 xx.xx.xx.Xxx 后来改回别名就好了 ----其他人的解决---- 1.mybatis的映射文件的命令空间与接口的全限定名不一致; 2有可能mybatis的映射文件名字与接口的类名字不一致; 3.还有一种情况就是接口声明的方法在映射文件里面没有。 4.mapper包中的mapper

如何在PostgreSQL中使用pg_stat_statements插件进行SQL性能统计和分析?

文章目录 一、启用pg_stat_statements插件二、查看统计信息三、定期重置统计信息四、注意事项 PostgreSQL中的pg_stat_statements是一个强大的插件,用于追踪执行时间最长的SQL语句。通过它,我们可以获取有关SQL语句执行频率、总执行时间、平均执行时间等信息,从而进行性能调优和问题分析。 一、启用pg_stat_statements插件

Mybatis 出现Mapped Statements collection does not contain value for xxx

mapper.xml中没有加入namespace mapper.xml中的方法和接口mapper的方法不对应 mapper.xml没有加入到mybatis-config.xml中(即总的配置文件) 配置了mapper文件的包路径的除外 mapper.xml文件名和所写的mapper名称不相同。

Mapped Statements collection does not contain value for Addressbook.getByIds

严重: Servlet.service() for servlet [springmvc] in context with path [/testcs_dn-web] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested ex