zoukankan      html  css  js  c++  java
  • JDBC(2)—Statement

    1. 介绍:
      获取到数据库连接之后,就可以对数据库进行一些增、删、改操作,但是却不能进行查询操作。
      增删改操作是程序到数据库的一个操作过程,但是查询是程序到数据库——数据库返回到程序的一个过程。

    2. 步骤:

      • 步骤:
      • 1.获取数据库连接
      • 2.准备插入的语句
      • 3.执行插入、删除、修改
      • 3_1.获取操作SQL语句的Statement对象(通过Connection的createStatement()方法来获取)
      • 3_2.调用Statement对象的executeUpdate(sql),执行SQL语句进行插入
      • 4.关闭Statement对象
      • 5.关闭数据库连接
    3. 注意:
      • 1.Statement用于执行SQL语句的对象
      • 1_1.通过Connection的createConnection()方法来获取
      • 1_2.通过executeUpdate(sql),可以执行sql语句
      • 1_3.传入的sql可以是INSERT、UPDATE、DELETE,但不能是SELECT
      • 2.Connection、Statement都是应用程序和服务器的连接资源,使用后一定要关闭
      • 3.关闭的顺序,先关闭后获取的,即:先Statement后Connection
    4. 实例:

    例一

        @Test
        public void testStatement() throws Exception{
            Connection conn = null;
            Statement statement = null;
            try {
                //1.获取数据库连接
                conn = connection_1.getDriverManager();
                //2.准备插入的语句
                //增
                String sql = "INSERT INTO CUSTOMERS (NAME,AGE,BIRTH,address) " +
                        "VALUES ('张辽','13','2004-05-12','河北省')";
                //删
                String sql1 = "DELETE FROM CUSTOMERS WHERE id = 1 ";
                //改
                String sql2 = "UPDATE CUSTOMERS SET NAME = '张辽' WHERE id = '5'";
                //3_1.获取操作SQL语句的Statement对象
                statement = conn.createStatement();
                //3_2.调用Statement对象的executeUpdate(sql)方法,执行SQL语句进行插入
                statement.execute(sql);
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                if(statement != null){
                    //4.关闭statement对象
                    try {
                        statement.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                if(conn != null){
                    //5.关闭数据库连接
                    try {
                        conn.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }   
                }
            }
        }
    1. 工具类TestTools中的一些获取结果集的方法
    /**
         * 2.操作数据库,包括增、删、改操作。
         * 获取数据库链接(Connection)之后,使用(Statement)操作数据库,对数据库进行增删改操作。
         */
        public static void getStatement(){
            Connection conn = null;
            Statement statement = null;
            try {
                //1.获取数据库连接
                conn = TestTools.getConnection();
                //2.准备插入的语句
                //增
                String sql1 = "INSERT INTO CUSTOMERS (NAME,AGE,BIRTH,address) " +
                        "VALUES ('王五','23','1995-05-12','河南省')";
                //删
                String sql2 = "DELETE FROM CUSTOMERS WHERE id = 1 ";
                //改
                String sql3 = "UPDATE CUSTOMERS SET NAME = '张辽' WHERE id = '5'";
                //3_1.获取操作SQL语句的Statement对象
                statement = conn.createStatement();
                //3_2.调用Statement对象的executeUpdate(sql)方法,执行SQL语句进行插入
                statement.execute(sql1);
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                //4.关闭连接
                TestTools.release(statement, conn);
            }
        }
    
        /**
         * 2_1.通用方法,对2.方法进行了通用性的修改,功能不变包括增、删、改操作。使用Statement进行数据表更新,包括增、删、改操作,但不包括查询。
         * 获取数据库链接(Connection)之后,使用(Statement)操作数据库,对数据库进行增删改操作。
         */
        public static void update(String sql){
            Connection conn = null;
            Statement statement = null;
            try {
                //1.获取数据库连接
                conn = TestTools.getConnection();
                //2.获取操作SQL语句的Statement对象
                statement = conn.createStatement();
                //3.调用Statement对象的executeUpdate(sql)方法,执行SQL语句进行插入
                statement.execute(sql);
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                //4.关闭连接
                TestTools.release(statement, conn);
            }
        }
        /**
         * 2_2.通用方法,对2_1.方法进行了修改,功能不变包括增、删、改操作。使用PreparedStatement进行数据表更新。
         * Object ... args:表示可变参数。
         * preparedstatement.executeUpdate();该方法用于更新。
         * preparedstatement.executeQuery();该方法用于查询。
         */
        public static void update(String sql ,Object ... args){
            //1.获取链接
            Connection conn = null;
            //2.获取Preparedtatement对象
            PreparedStatement preparedstatement = null;
            try {
                conn = TestTools.getConnection();
                preparedstatement = conn.prepareStatement(sql);
                //3.由于是可变参数,所以使用for循环,设置sql语句的占位符
                for(int i = 1; i < args.length; i++){
                    preparedstatement.setObject(i+1, args[i]);
                }
                //4.执行更新
                preparedstatement.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                //5.关闭连接
                TestTools.release(preparedstatement, conn);
            }
    
        } 
  • 相关阅读:
    stm32 oled学习
    PWM输出配置步骤
    IIC通信笔记
    运算放大器原理
    stm32跑马灯实现及蜂鸣器实验
    一个字节多少位
    pyQT编写界面调用摄像头
    PAT Advanced 1151 LCA in a Binary Tree (30) [树的遍历,LCA算法]
    PAT Advanced 1143 Lowest Common Ancestor (30) [二叉查找树 LCA]
    PAT Advanced 1147 Heaps (30) [堆,树的遍历]
  • 原文地址:https://www.cnblogs.com/tengpengfei/p/10454024.html
Copyright © 2011-2022 走看看