JDBC常用API

jdbc

JDBC就是使用JAVA语言操作关系型数据库的一套API 全称是Java数据库连接

  • JDBC本质

    • sun公司定义的一套操作所有关系型数据库的规则,即接口。
    • 各数据库厂商去实现这套接口,提供数据库驱动jar包。
    • 我们可以使用这套接口编程,真正执行代码的是驱动jar包中的实现类。
  • JDBC的好处

    • ​ 同一套Java代码,操作不同的关系型数据库。
    • 各数据库厂商使用相同的接口,JAVA代码不需要针对不同的数据库分别开发。
    • 可随时替换底层的数据库,访问数据库的java代码基本不变。
            //1.注册驱动 MYSQL5之后的版本可以省略注册驱动的步骤  自动加载jar包中的META-INF/services/java.sql.Driver文件中的驱动类
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2. 获取连接对象 connection
            String url = "jdbc:mysql://127.0.0.1:3306/cyt?useSSL=false";
            String username = "root";
            String password = "1234";
            Connection connection = DriverManager.getConnection(url, username, password);
            //3.定义SQL语句
            String sql = "select * from tb_account";
            //4.获取执行SQL的对象 statement
            Statement statement = connection.createStatement();
    		//5.执行SQL语句
            ResultSet resultSet = statement.executeQuery(sql);
    		//循环打印获取到的数据
            while (resultSet.next()){
                String Name = resultSet.getString(1);
                double Money = resultSet.getDouble(2);
                System.out.println(Name);
                System.out.println(Money);
                System.out.println("---------------");
            }
    		//依次释放打开的资源 从最后打开的资源依次释放
            resultSet.close();
            statement.close();
            connection.close();
        }
    

1. JDBC API详解

  • DriverManager
  • DriverManager(驱动管理类)作用:

    1. 注册驱动

      //com.mysql.cj.jdbc.Driver内的源码 
      DriverManager.registerDriver(new Driver());
      
    2. 获取数据库链接

      public static Connection getConnection(String url,
              String user, String password)
      
      1. url :
        • 语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2…
        • 实例:jdbc:mysql://127.0.0.1:3306/cyt?useSSL=false
        • 细节:如果连接的是本机mysql服务器,并且mysql默认端口是3360,则url可以简写为:jdbc:mysql:///数据库名称/…
        • useSSL=false参数。禁用安全连接方式,解决警告提示。
      2. user:用户名
      3. password:密码
  • Connection
    1. 获取执行SQL的对象
    • 普通执行SQL对象

      Statement  createStatement()
      
    • 预编译SQL的执行SQL对象:防止SQL注入

      	PreparedStatement preparedStatement(sql)
      
    • 执行存储过程的对象

      CallableStatement prepareCall(sql)
      
    1. 事务管理
    • MYSQL事务管理

    • 开启事务:BEGIN;/START TRANSACTION;

      提交事务:COMMIT;

      回滚事务:ROLLBACK;

      MYSQL默认自动提交事务

    • JDBC事务管理:Connection接口中定义了3各对应的方法

    • 开启事务:setAutoCommit(boolean autoCommit):true为自动提交事务;false为手动提交事务,即为开启事务。

      提交事务:commit()

      回滚事务:rollback()

  • Statement
    1. 作用:

      • 执行SQL语句

        int executeUpdate(sql) //执行DML 、DDL语句
        //返回值:DML语句影响的行数。DDL语句执行后,执行成功也可能返回0.    
        
        ResultSet executeQuery(sql) //执行DQL语句
        //返回值:ResultSet结果集对象
        
  • ResultSet
    • ResultSet(结果集对象)作用:

      • 封装了DQL查询语句的结果

        ResultSet statement.executeQuery(sql) 执行DQL语句 ,返回ResultSet对象
        
      • 获取查询结果

      • boolean next() : (1) 将光标从当前位置向前移动一行 (2)判断当前行是否为有效行

        返回值:

        ​ true:有效行,当前行有数据

        ​ false:无效行,当前行没有数据

        xxx getxxx(参数):获取参数

        xxx :数据类型; 如int getint(参数)

        ​ int : 列的编号,从1开始

        ​ String :列的名称

   while (resultSet.next()){
            String Name = resultSet.getString(1);
            double Money = resultSet.getDouble(2);
            System.out.println(Name);
            System.out.println(Money);
            System.out.println("---------------");
        }
  • PreparedStatement

    • 作用:

      • 预编译SQL语句并执行:预防SQL注入问题

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

      •   String sql = "select * from sys_user where username = ? and password = ?";
                String name= "zhangsan";
               // String pwd = "'or'1'='1";  //模仿SQL注入
                String pwd = "123";
                PreparedStatement preparedStatement = connection.prepareStatement(sql);
                preparedStatement.setString(1,name);
                preparedStatement.setString(2,pwd);
                ResultSet resultSet = preparedStatement.executeQuery();
                if (resultSet.next()) {
                    System.out.println("登录成功");
                }else {
                    System.out.println("登录失败");
                }
                resultSet.close();
                preparedStatement.close();
                connection.close();
        
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值