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 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 对象。

猜你喜欢

转载自blog.csdn.net/x1339874968/article/details/119186663
今日推荐