JDBC知识

学习目标:

  • 了解JDBC的概念
  • 学习JDBC的使用步骤
  • 了解JDBC对象
  • 了解JDBC控制事务
  • 了解封装通用的JDBC工具
  • 了解JDBCUtil
  • 了解连接池第三方插件

学习内容:

  1. 掌握JDBC的概念
  2. 学习JDBC的使用步骤
  3. 掌握JDBC对象
  4. 掌握JDBC控制事务
  5. 掌握封装通用的JDBC工具
  6. 学习JDBCUtil
  7. 学习连接池第三方插件

学习产出:

1、概念:Java Database Connectivity Java java语言操作数据库
本质:官方定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口编程,真正执行代码的是驱动jar包中的实现类。
2、使用步骤

//1、导入驱动jar包,复制jar包到项目lib文件夹下
//2、注册驱动,Class.forName(String className) 使用装载当前类的类装载器来装载制定的类
        Class.forName("com.mysql.cj.jdbc.Driver");
        //3、获取数据库连接对象 Connection
        Connection connection= DriverManager.getConnection("localhost","root","root");
        //4、定义sql
           String sql="select * from student";
        //5、获取一个执行sql语句的对象statement
        Statement stmt=connection.createStatement();
        //6、执行sql语句,返回一个ResultSet对象(里面包含查询出来的结果)
        ResultSet rs= stmt.executeQuery(sql);

        //7、从ResultSet对象获取数据
        while(rs.next()){
            int id=rs.getInt("id");
            String name=rs.getString("name");

            System.out.println("id:"+id+"name:"+name);
        }
        //8、释放资源
        rs.close();
        stmt.close();
        connection.close();

3、JDBC对象

  • DriverManager(驱动管理类)
    管理一组 JDBC 驱动程序的基本服务
    1)注册驱动
    2)获取数据库链接
getConnection(String url,String user,String password)
  • Connection(数据库了解对象)–DDL
    连接对象
    1)获取执行SQL对象
//普通执行SQL对象
Statement createStatement()
//预编译SQL的执行SQL对象:防止SQL注入
PreparedStatement prepareStatement(sql)
//执行存储过程的对象
CallableStatement prepareCall(sql)
  • Statement–DML
    提供了执行语句和获取结果的基本方法;
excuteUpdate(sql)执行DMLDDL
  • ResultSet–DQL
    结果集对象,封装查询结果
    获取数据,getxxx(xxx:数据类型)
  • PreparedStatement
    执行sql的对象
    可以用来防止sql注入
    设置占位符
String username = "zs";
String password = "123";

String sqlString = "select * from user where username = ? and password = ?";

PreparedStatement preparedStatement = connection.prepareStatement(sqlString);

preparedStatement.setString(1, username);
preparedStatement.setString(2, password);

ResultSet resultSet = preparedStatement.executeQuery();

4、控制事务
步骤

  • 开启事务
  • 提交事务/回滚事务
    使用Connection对象管理事务
//开启事物
setAutoCommit(bollean autoCommit):true// 调用该方法设置参数为false,即开启事务。在执行sql之前开启
//提交事物
    commit()// 当所有sql都执行完提交事务
//回滚事物
    rollback()// 出现错误回滚事务,在catch中回滚事务

在这里插入图片描述

5、 封装通用的JDBC工具
创建JdbcUtil工具类
封装获取连接getConnection和关闭方法close

//JDBCutils
 public static Connection getConnection(){
        Connection connection=null;
        try{
            //获取类根目录
            ClassLoader loader=JDBCutils.class.getClassLoader();
            //读取文件内容,转成字节输入流
            InputStream inputStream= loader.getResourceAsStream("jdbc.properties");

            Properties properties=new Properties();
            //加载inputstream,解析里面的内容
            properties.load(inputStream);

            String driver=properties.getProperty("jdbc.driver");
            String url=properties.getProperty("jdbc.url");
            String username=properties.getProperty("jdbc.username");
            String password=properties.getProperty("jdbc.password");

            //注册驱动
            Class.forName("driver");
            //连接数据库
            connection= DriverManager.getConnection(url,username,password);

        }catch(Exception e){
            e.printStackTrace();
        }
        return connection;
    }
    public static  void close(Connection connection, Statement stmt, ResultSet rs){
        try{   //关闭资源
            if(rs!=null){
                rs.close();
            }
            if(stmt!=null){
                stmt.close()
            }
            if(connection!=null) {
                connection.close();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
public static void main(String[] args) {
    //connection!
        Connection connection=JDBCutils.getConnection();
        PreparedStatement stmt=null;
        ResultSet rs=null;

        try {
            stmt=connection.prepareStatement("select * from student");
            stmt.executeQuery();
            while(rs.next()){
                System.out.println(rs.getString("name"));
            }
        }catch (SQLException throwables){
           throwables.printStackTrace();
        }finally {
            //close!
            JDBCutils.close(connection,stmt,rs);
        }
    }
//配置文件
//提取jdbc配置参数到独立文件
//在src下创建文件 jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test19?userSSL=false&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=root

6、JDBCUtil

  • 数据库连接池
    说明:一个容器(集合),存放数据库连接的容器
    当系统初始化后,容器被创建,容器会申请一些连接对象,当用户访问数据库时,从容器中获取连接对象,用画访问完后,会将连接对象归还给容器
    好处:节约资源;用户访问高效。
  • 标准接口
    DataSource javax.sql包下的
    • 方法
      • 获取连接:getConnection()
      • 归还连接:Connection.close()
        如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接了,而是归还连接
    • 获取properties

7、连接池第三方插件
Druid:数据库连接池技术,阿里巴巴提供的,德鲁伊

  • 导入jar包,druid
  • 定义配置文件
    • 是properties形式的
    • 可以叫任意名称,放在任意目录下
  • 加载配置文件
//druid
public class JDBCutils1 {
    private static DataSource dataSource;
    static{
        try{
            ClassLoader loader=JDBCutils1.class.getClassLoader();
            InputStream inputStream=loader.getResourceAsStream("druid.properties");

            Properties properties=new Properties();
            properties.load(inputStream);

            dataSource= DruidDataSourceFactory.createDataSource(properties);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public static Connection getConnection(){
        Connection connection=null;
        try{
            //连接数据库
            connection= dataSource.getConnection();
        }catch(Exception e){
            e.printStackTrace();
        }

        return connection;
    }
    public static  void close(Connection connection, Statement stmt, ResultSet rs){
        try{   //关闭资源
            if(rs!=null){
                rs.close();
            }
            if(stmt!=null){
                stmt.close();
            }
            if(connection!=null) {
                connection.close();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
//druid配置文件
#properties配置文件
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test19?userSSL=false&serverTimezone=Asia/Shanghai
username=root
password=root
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值