JDBC--通过Statement执行更新、查询操作

一、Statement

1.通过调用 Connection 对象的 createStatement 方法创建该对象

2.该对象用于执行静态的 SQL 语句,并且返回执行结果

3.Statement 接口中定义了下列方法用于执行 SQL 语句:

  • ResultSet excuteQuery(String sql)
  • int excuteUpdate(String sql)

 程序----向数据表中插入一条记录

    /**
     * 通过 JDBC向指定的数据表中插入一条记录
     * 1. Statement: 用于执行 SQL语句的对象
     * 1.1 通过 Connection的 createStatement()方法来获取
     * 1.2 通过 executeUpdate(sql)可以执行 SQL语句
     * 1.3 传入的 SQL可以是 INSERT、UPDATE或 DELETE,但不能是 SELECT。
     *
     * 2. Connection,Statement都是程序与数据库的连接资源,使用后一定要关闭
     *    需要在finally中关闭
     */
    @Test
    public void test5() throws Exception {
        Connection conn = null;
        Statement statement = null;

        try {
            //1. 获取数据库连接
            conn = getConnection2();

            //2. 准备插入的SQL语句
            String sql = "INSERT INTO Student " +
                    "VALUES('201415311', '张明', '男', 19, 'MA', '2014-09-08');";

            //3. 执行插入
            //3.1 获取操作SQL语句的Statement对象
            //    调用Connection的createStatement()方法来获取
            statement = conn.createStatement();
            //3.2 通过Statement对象的executeUpdate(sql)执行SQL语句进行插入
            statement.executeUpdate(sql);
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            try{
                //4. 关闭Statement对象
                if(statement != null) {
                    statement.close();
                }
            }catch(Exception e1) {
                e1.printStackTrace();
            }finally {
                //5. 关闭连接
                if(conn != null) {
                    conn.close();
                }
            }
        }
    }

二、ResultSet

1.通过调用 Statement 对象的 excuteQuery() 方法创建该对象

2.ResultSet 对象以逻辑表格的形式封装了执行数据库操作的结果集,ResultSet 接口由数据库厂商实现

3.ResultSet 对象维护了一个指向当前数据行的游标,初始的时候,游标在第一行之前,可以通过 ResultSet 对象的 next() 方法移动到下一行

4.ResultSet 接口的常用方法:

  • boolean next()
  • getString()

 程序----使用ResultSet执行查询操作

    /**
     * ResultSet : 结果集,封装了使用 JDBC进行查询的结果。
     * 1. 调用 Statement 对象的executeQuery(sql) 可以得到结果集
     * 2. ResultSet 返回的实际上就是一张数据表,有一个指针指向数据表的第一行的前面,
     *    可以使用 next() 方法检测下一行是否有效,若有效返回 true且指针下移
     * 3. 当指针对位到一行时,可以随时调用getXxx(index)或 getXxx(column)获取每一列的值
     *    例如: getString("name")
     * 4. ResultSet 也需要关闭
     */
    @Test
    public void test7() {
        Connection conn = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            //1. 获取连接
            conn = getConnection2();

            //2. 获取Statement
            statement = conn.createStatement();

            //3.准备SQL
            String sql = "SELECT * FROM Student " +
                         "WHERE Sname='刘晨'";

            //4. 执行查询,得到ResultSet
            resultSet = statement.executeQuery(sql);

            //5. 处理ResultSet
            while(resultSet.next()) {
                //按列读取
                String no = resultSet.getString(1);
                String name = resultSet.getString(2);
                String sex = resultSet.getString(3);
                int age = resultSet.getInt(4);
                String dept = resultSet.getString(5);
                Date entrance = resultSet.getDate(6);

                System.out.println(no+" "+name+" "+sex+" "
                        +age+" "+dept+" "+entrance);
            }
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            if(resultSet != null) {
                try {
                    resultSet.close();
                } catch(Exception e) {
                    e.printStackTrace();
                }
            }
            if(statement != null) {
                try {
                    statement.close();
                } catch(Exception e) {
                    e.printStackTrace();
                }
            }
            if(conn != null) {
                try {
                    conn.close();
                } catch(Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

附:

getConnection2()方法

    //获取数据库连接
    public Connection getConnection2() throws Exception {
        //1.准备连接数据库的4个字符串
        //1.1 创建Properties对象
        Properties properties = new Properties();
        //1.2 获取jdbc.properties对应的输入流
        java.io.InputStream in = this.getClass().getClassLoader().getResourceAsStream("jdbc.properties");
        //1.3 加载文件
        properties.load(in);
        //1.4 给字符串赋值
        String driver = properties.getProperty("driver");
        String jdbcUrl = properties.getProperty("jdbcUrl");
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        //2.加载数据库驱动程序(对应的Driver实现类中有注册驱动的静态代码块)
        Class.forName(driver);
        //3.通过DriverManager的getConnection方法获取数据库连接
        return DriverManager.getConnection(jdbcUrl, user, password);
    }

 

 

JDBC学习笔记:

1. 获取数据库连接    http://my.oschina.net/daowuming/blog/704243

2. 通过Statement执行更新、查询操作    ----当前----

3. 使用PrepareStatement    http://my.oschina.net/daowuming/blog/704432

4. 使用ResultSetMetaData 对象处理结果集元数据    http://my.oschina.net/daowuming/blog/704487

5. 使用DatabaseMetaData获取数据库信息    http://my.oschina.net/daowuming/blog/704553

6. BLOB    http://my.oschina.net/daowuming/blog/704593

7. 处理事务与隔离级别    http://my.oschina.net/daowuming/blog/704611

8. 批量处理    http://my.oschina.net/daowuming/blog/704641

9. 数据库连接池    http://my.oschina.net/daowuming/blog/704700

10. 调用函数与存储过程    http://my.oschina.net/daowuming/blog/704813

转载于:https://my.oschina.net/daowuming/blog/704384

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值