1、概念

Statement 是 Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。Statement对象,用于执行不带参数的简单SQL语句(用于执行静态 SQL 语句并返回它所生成结果的对象。

jdbc示例

10 public class javaTest {11
12     public static void main(String[] args) throws ClassNotFoundException, SQLException  {13         String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
14         String USER="root";
15         String PASSWORD="tiger";
16         //1.加载驱动程序
17         Class.forName("com.mysql.jdbc.Driver");
18         //2.获得数据库链接
19         Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
20         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
21         Statement st=conn.createStatement();
22         ResultSet rs=st.executeQuery("select * from user");
23         //4.处理数据库的返回结果(使用ResultSet类)
24         while(rs.next()){25             System.out.println(rs.getString("user_name")+" "
26                           +rs.getString("user_password"));
27         }
28
29         //关闭资源
30         rs.close();
31         st.close();
32         conn.close();
33     }
34 }

2、常用方法

  • Modifier and Type Method and Description
    void addBatch(String sql) 将给定的SQL命令的命令的当前列表这 Statement对象。
    void cancel() 如果取消这 Statement对象数据库和驱动支持中止一个SQL语句。
    void clearBatch() 把这 Statement SQL命令对象的当前列表。
    void clearWarnings() 清除所有的警告报道这 Statement对象。
    void close() 此次发布的 Statement对象的数据库和JDBC资源,而不是等待这种情况发生时,它立刻自动关闭。
    void closeOnCompletion() 指定该 Statement将会关闭所有依赖于它的结果集是封闭的。
    boolean execute(String sql) 执行给定的SQL语句,可以返回多个结果。
    boolean execute(String sql, int autoGeneratedKeys) 执行给定的SQL语句,可以返回多个结果,和信号的驱动程序,任何自动生成的键应提供检索。
    boolean execute(String sql, int[] columnIndexes) 执行给定的SQL语句,可以返回多个结果,和信号驱动程序,自动生成给定阵列应提供检索显示键。
    boolean execute(String sql, String[] columnNames) 执行给定的SQL语句,可以返回多个结果,和信号驱动程序,自动生成给定阵列应提供检索显示键。
    int[] executeBatch() 向数据库提交一个命令到执行,如果所有的命令都成功执行,则返回一个更新计数的数组。
    default long[] executeLargeBatch() 向数据库提交一个命令到执行,如果所有的命令都成功执行,则返回一个更新计数的数组。
    default long executeLargeUpdate(String sql) 执行给定的SQL语句,这可能是一个 INSERTUPDATE,或 DELETE语句或SQL语句不返回值,例如SQL DDL语句。
    default long executeLargeUpdate(String sql, int autoGeneratedKeys) 执行给定的SQL语句和信号与给定的标志是否自动生成的 Statement物体产生的钥匙应提供检索的司机。
    default long executeLargeUpdate(String sql, int[] columnIndexes) 执行给定的SQL语句和信号驱动程序,自动生成给定阵列应提供检索显示键。
    default long executeLargeUpdate(String sql, String[] columnNames) 执行给定的SQL语句和信号驱动程序,自动生成给定阵列应提供检索显示键。
    ResultSet executeQuery(String sql) 执行给定的SQL语句,返回一个 ResultSet对象。
    int executeUpdate(String sql) 执行给定的SQL语句,这可能是一个 INSERTUPDATE,或 DELETE语句或SQL语句不返回值,例如SQL DDL语句。
    int executeUpdate(String sql, int autoGeneratedKeys) 执行给定的SQL语句和信号与给定的标志是否自动生成的 Statement物体产生的钥匙应提供检索的司机。
    int executeUpdate(String sql, int[] columnIndexes) 执行给定的SQL语句和信号驱动程序,自动生成给定阵列应提供检索显示键。
    int executeUpdate(String sql, String[] columnNames) 执行给定的SQL语句和信号驱动程序,自动生成给定阵列应提供检索显示键。
    Connection getConnection() 产生这一 Statement检索对象的 Connection对象。
    int getFetchDirection() 从数据库表中检索,结果默认从这个 Statement对象生成集取行的方向。
    int getFetchSize() 检索结果集的行,是默认取 ResultSet对象从这 Statement对象生成的数。
    ResultSet getGeneratedKeys() 检索任何自动生成的创建作为一个结果,执行这 Statement对象键。
    default long getLargeMaxRows() 检索, ResultSet对象的 Statement对象可以包含的最大行数。
    default long getLargeUpdateCount() 检索当前结果为更新计数;如果结果是 ResultSet对象或没有结果,返回- 1。
    int getMaxFieldSize() 检索字节可以返回字符和二进制在 ResultSet对象的 Statement物体产生的列值的最大数量。
    int getMaxRows() 检索, ResultSet对象的 Statement对象可以包含的最大行数。
    boolean getMoreResults()Statement移动对象的下一个结果,返回 true如果是 ResultSet对象,和隐式关闭任何电流 ResultSet对象(S)的方法得到的 getResultSet
    boolean getMoreResults(int current)Statement移动对象的下一个结果,与任何现有的 ResultSet交易对象(S)根据给定的标志指定的指令,并返回 true如果接下来的结果是一个 ResultSet对象。
    int getQueryTimeout() 检索数秒,司机将等待 Statement对象执行。
    ResultSet getResultSet() 检索当前结果作为一个 ResultSet对象。
    int getResultSetConcurrency() 检索对象的 ResultSet Statement对象生成的结果集的并发。
    int getResultSetHoldability() 检索对象的 ResultSet Statement对象生成的结果集的保持性。
    int getResultSetType() 检索对象的 ResultSet Statement对象生成的结果集的类型。
    int getUpdateCount() 检索当前结果为更新计数;如果结果是 ResultSet对象或没有结果,返回- 1。
    SQLWarning getWarnings() 获取第一个警告,这 Statement对象调用的报道。
    boolean isClosed() 这是否 Statement检索对象已关闭。
    boolean isCloseOnCompletion() 返回一个值,指示此 Statement将会关闭所有依赖于它的结果集是封闭的。
    boolean isPoolable() 返回一个值,指示是否 Statement是poolable或不。
    void setCursorName(String name) 设置SQL游标到给定的 String,这将在后续的 Statement对象 execute方法。
    void setEscapeProcessing(boolean enable) 设置或关闭的逃避处理。
    void setFetchDirection(int direction) 给司机一个提示的方向,行将在 ResultSet处理对象的使用这个 Statement对象创建。
    void setFetchSize(int rows) 给JDBC驱动程序提示的行数,应该从数据库中取出的时候,更多的行为 ResultSet对象的生成需要 Statement
    default void setLargeMaxRows(long max) 设置该对象的任何 ResultSet Statement对象生成可以包含一定数量的最大行数限制。
    void setMaxFieldSize(int max) 字节集可以返回字符和二进制在 ResultSet对象的对象产生 Statement列值的最大数量的限制。
    void setMaxRows(int max) 设置该对象的任何 ResultSet Statement对象生成可以包含一定数量的最大行数限制。
    void setPoolable(boolean poolable) 要求一个 Statement被合并或不合并。
    void setQueryTimeout(int seconds) 集数秒,司机将等待 Statement对象执行给定的秒数。

在JDBC应用中,应该尽可能的以PreparedStatement代替Statement,而不是用一味的使用Statement,下面从三个方面分析原因:代码的可读性和可维护性(第一个方面),虽然用PreparedStatement来代替Statement会使代码多出几行,但这样的代码无论从可读性还是可维护性上来说.都比直接用Statement的代码高很多档次:

  • 可读性好
stmt.executeUpdate("insert into tb_name (col1,col2,col2,col4) values ('"+var1+"','"+var2+"',"+var3+",'"+var4+"')");perstmt = con.prepareStatement("insert into tb_name (col1,col2,col2,col4) values (?,?,?,?)");perstmt.setString(1,var1);perstmt.setString(2,var2);perstmt.setString(3,var3);perstmt.setString(4,var4);perstmt.executeUpdate();
  • 性能提升
PreparedStatement接口继承Statement, PreparedStatement 实例包含已编译的 SQL 语句,执行速度要快于 Statement 对象。

statement的概念及常用方法相关推荐

  1. [Objective-C]OC中字典基本概念和常用方法(NSDictionary和NSMutableDictionary)

    一:字典的基本概念 Foundation中的字典(NSDictionary,NSMutableDictionary)是由键-值对组成的数据集合.正如,我们在字典里查找单词的定义一样. 通过key(键) ...

  2. 字符串的定义和常用方法

    文章目录 前言 一.概念 二.关键性质 三.String == null和""的区别 四.常用方法 一.object to string 二.字符串拼接 三.判断字符串是否为&qu ...

  3. stmt在java中的应用_JDBC技术基础总结转载,非原创

    JDBC的全称是Java DataBase Connectivity,即Java数据库连接.它是一套行业标准的API,可以在Java应用程序中与关系型数据库建立连接,并执行相关操作,例如Oracle, ...

  4. java jdbc jar包_大数据从入门到深入:JavaEE 之 数据库技术 JDBC(1)

    1章 JDBC 1.1 JDBC概述 JDBC(Java DataBase Connectivity,java动态数据 库连接技术)是一种用于执行SQL语句的Java API : Applicatio ...

  5. MySQL数据库之SQL的各种操作/Html/Java和XML的关系

    MySQL数据库之SQL的各种操作/Html/Java和XML的关系 今天内容:(1)数据库的概述(2)MySQL数据库的环境搭建(3)常用的数据类型(4)DDL数据定义语句(5)DML数据操纵语句1 ...

  6. 六万+字带你了解数据库---mysql--JDBC-Redis--MongoDB

    路漫漫其修远兮,读者朋友们加油 MYSQL 1 常见的数据库 数据库分两大类,一类是 关系型数据库.另一类叫做 非关系型数据库. 关系型数据库: MySQL,Oracle,PostgreSQL,SQL ...

  7. java基础-14-连接数据库

    第1章 数据库 1.1 数据库概述 l 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. l 什 ...

  8. 白盒测试工具_别再头疼工作效率低!这些超实用的黑盒、白盒测试方法你都用上了吗?...

    在软件测试工作中,为充分利用现有的时间和资源条件,提高测试效率和测试充分性,当前有多种方法辅助测试人员完成测试工作,推进项目进度,其中最普遍的莫过于白盒测试和黑盒测试,白盒测试和黑盒测试的概念和常用方 ...

  9. c语言关键字不做标识符,C语言标识符、关键字、注释、表达式和语句

    这一节主要讲解C语言中的几个基本概念. 标识符 定义变量时,我们使用了诸如 a.abc.mn123 这样的名字,它们都是标识符(Identifier). 标识符就是程序员自己起的名字,除了变量名,后面 ...

最新文章

  1. 2019年Java程序员就业分析
  2. Java开发必会的Linux命令
  3. 驰骋工作流携手山东金义,实施落地上海光大银行
  4. js前端和后台数据交互-----前端传字符串,后台控制器将其转化为集合
  5. 隐马尔科夫模型(Hidden Markov Models) 系列之五
  6. 红帽linux更新指令,CentOS7.0命令更新新版特性详解
  7. .NET CORE(C#) WPF亚克力窗体
  8. SQ小组KTV点歌系统简介
  9. 华为云企业级Redis:集群搭载多DB,多租隔离更降本
  10. error: (-205:Formats of input arguments do not match) All the matrices must have the same data type
  11. 安卓逆向及JavaScript实战
  12. 飞信死了,运营商也快死了
  13. unity3d 反射获取面板的Rotation的值
  14. 关于uni-app中SegmentedControl 分段器不显示的问题
  15. 云防护是什么?为何使用云防护?
  16. 分库分表和 NewSQL 到底怎么选?
  17. word插入向上向下取整符号
  18. 内存对齐是什么?为什么要内存对齐?
  19. HTML学习笔记 2
  20. 【小技巧】酒店Wifi不弹出登陆方案(Mac)

热门文章

  1. #今日论文推荐#NAACL 2022 | 基于Prompt的文本生成迁移学习
  2. 这是一篇程序员对产品经理的吐槽~~~
  3. C#中的值传递和引用传递
  4. docker脚本自动化安装
  5. 关于Android Studio安装中文包版本不兼容问题
  6. 手机为何老提示网络连接不可用?
  7. 电子合同有效性需要解决的问题
  8. windows版本服务器,修改nginx.conf,重启nginx配置文件不起作用解决办法。
  9. 看涨期权(call options)
  10. 面进百度,被这份阿里大能开源的“全彩版图解 HTTP 手册”折服了,要不怎么说还得是权威啊