statement的概念及常用方法

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 TypeMethod and Description
      voidaddBatch(String sql) 将给定的SQL命令的命令的当前列表这 Statement对象。
      voidcancel() 如果取消这 Statement对象数据库和驱动支持中止一个SQL语句。
      voidclearBatch() 把这 Statement SQL命令对象的当前列表。
      voidclearWarnings() 清除所有的警告报道这 Statement对象。
      voidclose() 此次发布的 Statement对象的数据库和JDBC资源,而不是等待这种情况发生时,它立刻自动关闭。
      voidcloseOnCompletion() 指定该 Statement将会关闭所有依赖于它的结果集是封闭的。
      booleanexecute(String sql) 执行给定的SQL语句,可以返回多个结果。
      booleanexecute(String sql, int autoGeneratedKeys) 执行给定的SQL语句,可以返回多个结果,和信号的驱动程序,任何自动生成的键应提供检索。
      booleanexecute(String sql, int[] columnIndexes) 执行给定的SQL语句,可以返回多个结果,和信号驱动程序,自动生成给定阵列应提供检索显示键。
      booleanexecute(String sql, String[] columnNames) 执行给定的SQL语句,可以返回多个结果,和信号驱动程序,自动生成给定阵列应提供检索显示键。
      int[]executeBatch() 向数据库提交一个命令到执行,如果所有的命令都成功执行,则返回一个更新计数的数组。
      default long[]executeLargeBatch() 向数据库提交一个命令到执行,如果所有的命令都成功执行,则返回一个更新计数的数组。
      default longexecuteLargeUpdate(String sql) 执行给定的SQL语句,这可能是一个 INSERTUPDATE,或 DELETE语句或SQL语句不返回值,例如SQL DDL语句。
      default longexecuteLargeUpdate(String sql, int autoGeneratedKeys) 执行给定的SQL语句和信号与给定的标志是否自动生成的 Statement物体产生的钥匙应提供检索的司机。
      default longexecuteLargeUpdate(String sql, int[] columnIndexes) 执行给定的SQL语句和信号驱动程序,自动生成给定阵列应提供检索显示键。
      default longexecuteLargeUpdate(String sql, String[] columnNames) 执行给定的SQL语句和信号驱动程序,自动生成给定阵列应提供检索显示键。
      ResultSetexecuteQuery(String sql) 执行给定的SQL语句,返回一个 ResultSet对象。
      intexecuteUpdate(String sql) 执行给定的SQL语句,这可能是一个 INSERTUPDATE,或 DELETE语句或SQL语句不返回值,例如SQL DDL语句。
      intexecuteUpdate(String sql, int autoGeneratedKeys) 执行给定的SQL语句和信号与给定的标志是否自动生成的 Statement物体产生的钥匙应提供检索的司机。
      intexecuteUpdate(String sql, int[] columnIndexes) 执行给定的SQL语句和信号驱动程序,自动生成给定阵列应提供检索显示键。
      intexecuteUpdate(String sql, String[] columnNames) 执行给定的SQL语句和信号驱动程序,自动生成给定阵列应提供检索显示键。
      ConnectiongetConnection() 产生这一 Statement检索对象的 Connection对象。
      intgetFetchDirection() 从数据库表中检索,结果默认从这个 Statement对象生成集取行的方向。
      intgetFetchSize() 检索结果集的行,是默认取 ResultSet对象从这 Statement对象生成的数。
      ResultSetgetGeneratedKeys() 检索任何自动生成的创建作为一个结果,执行这 Statement对象键。
      default longgetLargeMaxRows() 检索, ResultSet对象的 Statement对象可以包含的最大行数。
      default longgetLargeUpdateCount() 检索当前结果为更新计数;如果结果是 ResultSet对象或没有结果,返回- 1。
      intgetMaxFieldSize() 检索字节可以返回字符和二进制在 ResultSet对象的 Statement物体产生的列值的最大数量。
      intgetMaxRows() 检索, ResultSet对象的 Statement对象可以包含的最大行数。
      booleangetMoreResults()Statement移动对象的下一个结果,返回 true如果是 ResultSet对象,和隐式关闭任何电流 ResultSet对象(S)的方法得到的 getResultSet
      booleangetMoreResults(int current)Statement移动对象的下一个结果,与任何现有的 ResultSet交易对象(S)根据给定的标志指定的指令,并返回 true如果接下来的结果是一个 ResultSet对象。
      intgetQueryTimeout() 检索数秒,司机将等待 Statement对象执行。
      ResultSetgetResultSet() 检索当前结果作为一个 ResultSet对象。
      intgetResultSetConcurrency() 检索对象的 ResultSet Statement对象生成的结果集的并发。
      intgetResultSetHoldability() 检索对象的 ResultSet Statement对象生成的结果集的保持性。
      intgetResultSetType() 检索对象的 ResultSet Statement对象生成的结果集的类型。
      intgetUpdateCount() 检索当前结果为更新计数;如果结果是 ResultSet对象或没有结果,返回- 1。
      SQLWarninggetWarnings() 获取第一个警告,这 Statement对象调用的报道。
      booleanisClosed() 这是否 Statement检索对象已关闭。
      booleanisCloseOnCompletion() 返回一个值,指示此 Statement将会关闭所有依赖于它的结果集是封闭的。
      booleanisPoolable() 返回一个值,指示是否 Statement是poolable或不。
      voidsetCursorName(String name) 设置SQL游标到给定的 String,这将在后续的 Statement对象 execute方法。
      voidsetEscapeProcessing(boolean enable) 设置或关闭的逃避处理。
      voidsetFetchDirection(int direction) 给司机一个提示的方向,行将在 ResultSet处理对象的使用这个 Statement对象创建。
      voidsetFetchSize(int rows) 给JDBC驱动程序提示的行数,应该从数据库中取出的时候,更多的行为 ResultSet对象的生成需要 Statement
      default voidsetLargeMaxRows(long max) 设置该对象的任何 ResultSet Statement对象生成可以包含一定数量的最大行数限制。
      voidsetMaxFieldSize(int max) 字节集可以返回字符和二进制在 ResultSet对象的对象产生 Statement列值的最大数量的限制。
      voidsetMaxRows(int max) 设置该对象的任何 ResultSet Statement对象生成可以包含一定数量的最大行数限制。
      voidsetPoolable(boolean poolable) 要求一个 Statement被合并或不合并。
      voidsetQueryTimeout(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 对象。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值