JDBC_相关API介绍

API_Connection

数据库连接对象: 获取执行sql的对象;管理事务
Connection API可以管理事务,简单来理解就是,事务中定义的sql语句要么执行都成功,要么都失败

 public static void main(String[] args) throws SQLException {

        // 连接数据库
        String url = "jdbc:mysql:///db1?useSSL=false";
        String username = "root";
        String password = "123456";

        Connection conn = DriverManager.getConnection(url, username, password);

        // 定义sql语句,此处定义了两条sql语句
        String sql1 = "UPDATE `user` SET money = 2000 WHERE id = 1";
        String sql2 = "UPDATE `user` SET money = 2000 WHERE id = 2";

        // 获取执行sql的对象Statement
        Statement stmt = conn.createStatement();
        
        // 此处体现出了Connection API的作用之一:可以管理事务
        // 两条sql语句,要么都成功执行,要么事务回归,都执行失败
        try {
            // 1.开启事务
            conn.setAutoCommit(false);

            // 执行sql,返回值为影响行数
            int count1 = stmt.executeUpdate(sql1);

            System.out.println(7 / 0);
            int count2 = stmt.executeUpdate(sql2);

            // 处理结果
            System.out.println(count1);
            System.out.println(count2);

            // 2.提交事务
            conn.commit();
        } catch (Exception e) {
            System.out.println(e);
            // 3.事务回滚
            conn.rollback();
        }


        // 释放资源
        stmt.close();
        conn.close();


    }

API_Statement

作用:执行sql语句

 public static void main(String[] args) throws SQLException {
        // 连接数据库
        String url = "jdbc:mysql:///db1?useSSL=false";
        String username = "root";
        String password = "123456";
        Connection conn = DriverManager.getConnection(url, username, password);
        
        // 定义sql语句
        String sql1 = "UPDATE `user` SET money = 2000 WHERE id = 1";

        // 获取执行sql的对象Statement
        Statement stmt = conn.createStatement();
        
        // 执行sql,返回值为影响行数
        int count1 = stmt.executeUpdate(sql1);

        // 处理结果
        if (count1>0){
            System.out.println("修改数据成功!!!");
        }else{
            System.out.println("修改数据失败!!!");
        }

        // 释放资源
        stmt.close();
        conn.close();
    }

API_ResultSet

封装了DQL查询语句的结果

    public static void main(String[] args) throws SQLException {
        // 连接数据库
        String url = "jdbc:mysql:///db1?useSSL=false";
        String username = "root";
        String password = "123456";
        Connection connection = DriverManager.getConnection(url, username, password);

        String sql = "select * from user";

        Statement stmt = connection.createStatement();
		
		// 封装了dql查询语句的结果,可通过实例化的对象对数据进行获取,方便其它操作
        ResultSet rs = stmt.executeQuery(sql);


        // 创建集合
        ArrayList<Account> list = new ArrayList<>();
        
        while (rs.next()){
            Account account = new Account();
            int id =rs.getInt(1);
            String name = rs.getString(2);
            String sex = rs.getString(3);
            String address = rs.getString(4);
            double money = rs.getDouble(5);

            // 赋值给对象
            account.setId(id);
            account.setName(name);
            account.setSex(sex);
            account.setAddress(address);
            account.setMoney(money);

            // 存入集合
            list.add(account);
            System.out.println("--------------");

        }

        System.out.println(list);
        // 释放资源
        rs.close();
        stmt.close();
        connection.close();
    }

API_PreparedStatement

该API的作用十分的大,他会预编译sql语句并执行:主要解决的问题是sql注入的问题。我想sql注入的问题大家应该都不陌生。关于sql注入的具体解释,请自行查阅,此处只做简单介绍。

sql注入:通过操作输入来修改事先定义好的sql语句,用以达到执行代码对服务器进行攻击的方法

主要通过在sql语句中使用?去占位,即替代变量的位置,代码如下

  public static void main(String[] args) throws SQLException {
        // 连接数据库
        String url = "jdbc:mysql:///test";
        String username = "root";
        String password = "123456";
        Connection conn = DriverManager.getConnection(url, username, password);

        // 接受用户名和密码
        String name = "gsw";
        String pwd = "123";
		
		// 该处通过?占位
        String sql = "select * from tb_user where name = ? and password = ? ";

        // 获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);

        // 设置?的值,此处可以通过?的顺序去填补上面的?你懂我意思吧?
        pstmt.setString(1, name);
        pstmt.setString(2, pwd);

        // 执行sql语句
        ResultSet rs = pstmt.executeQuery();

        // 判断是否登录成功
        if (rs.next()) {
            System.out.println("登录成功");
        } else {
            System.out.println("登录失败");
        }

        rs.close();
        pstmt.close();
        conn.close();
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书提供了JDBCTMAPI的权威教程与参考·~JDBCAPI技术支持使用JavaTM编程语言进行通用数据访问,该版本进行了更新和扩展,覆盖整个JDBC 3.0API的内容,包括。iava.sql包和易于构建服务器端应用程序的javax.sql包。 除了介绍JDBC 3.0 API规范外,本书还包含了更深层次的解释——从循序渐进的教程到每一个类和接口的全面参考。 对于那些学习Java技术的新手而言,本书还介绍Java编程语言和SQL的基础知识。以此为起点,您将学习如何建立数据库、如何建立连接、如何从结果集中获取值以及如何使用准备语句,从而学会创建完整的JDBC应用程序。另外,本书提供了很多示例,也举例说明了执行通用任务的方法。然后,本书转向更高级的主题,集中介绍JDBC 3.0API的一些高级功能,如可滚动和可更新的结果集、批量更新、SQL99数据类型、定制映射、保存点、语句池以及自动生成键等。 除了深入介绍JDBC元数据API之外,本书还给出了行集的最新信息。行集技术支持以JavaBeansTM组件来处理数据集。此外,本书还介绍JdbcRowSet、CachedRowSet、WebRowSet、JoinRowSet和FilteredRowSet对象的标准实现。 本书对JDBCAPI中的每个类和接口(从Array到XADataSource)都提供了简洁但完整的信息。每个类不但包含用例的概述,还包含方法和域的详尽解释。 文中有关SQL类型和Java编程语言中的类型之间的映射关系的章节、附录A、JDBC 2.0和3.0API中新特征的总结以及术语表,对所有数据库程序员来说都是必不可少的资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值