JDBC和连接池[23/12/17]

目录

一 JDBC

二 JDBC使用

三 连接池


一 JDBC

    1. 什么是jdbc?

       Jdbc就是数据库连接

      Jdbc核心类: driverManager , Connection ,Statement ,  ResultSet

     (1) DriverManager (驱动管理者):

          1.注册驱动:可以知道jdbc要使用哪个驱动

          2.获取Connection:可以获取到Connection,说明已经和数据库连接上

      (2) Connection(数据库连接对象)

          1. Connection最为重要的一个方法就是获取Statement对象

      (3) Statement(sql执行对象)

           1.向数据库发送sql

           2.执行sql并且获取执行结果

           核心方法:void execute

       (4) ResultSet(数据结果集对象)

二 JDBC使用
  1. 导入对应版本的驱动包(可以在项目结构中的依赖找到对应的模块看是否导入成功,新建一个lib文件,将jar包导入该目录,然后再刷新以确定导入成功。)

       

       2.在类中加载JDBC驱动

          (因为版本问题,如果运行后爆红,记得和我下面一样加上‘cj’)

//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver") ;

  3.连接数据库,获取Connection对象

//获取连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/crm?" , "root" , "1234") ;

if(connection!=null){
       System.out.println("连接成功");
   }

 (三个参数分别是:你连接的数据库的ip,端口和数据库表名 , 数据库账号 , 数据库密码)

 4.获取sql执行对象

  //获取sql执行对象
        Statement sta = connection.createStatement() ;

5.编写sql语句

 //编写sql语句
 String addsql = "insert into addform  values ('3' , '麻子' , '男' , 18 ,'闷骚' , 15151 , '1' , '2') " ;
 String deletesql = "delete from addform where name='麻子'" ;
 String selectsql = "select * from addform" ;
 String updatesql = "update addform set name = '三张'  , age = 88 where name = '张三' "  ;

(不同的sql语句编写的也不一样,需要根据你的需求自己去写,我这里只写了基础的增删改查语句。)

6.执行sql,返回结果

package dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class jdbc_dao {

     Connection con = null ;
     Statement sta = null ;
     ResultSet res  = null ;
    public jdbc_dao(Connection con , Statement sta , ResultSet res){
        this.con = con ;
        this.sta = sta ;
        this.res = res ;
    }

    //增
    public  boolean add(String sql) throws SQLException {
        int num = sta.executeUpdate(sql) ;
        if(num>0){
            System.out.println("数据添加成功");
            return true ;
        }
        System.out.println("数据添加失败");
        return false ;
    }

    //删
    public boolean delete(String sql) throws SQLException {
        int num = sta.executeUpdate(sql) ;
        if(num>0){
            System.out.println("数据删除成功");
            return true ;
        }
        System.out.println("数据删除失败");
        return false ;
    }

    //改
    public boolean update(String sql) throws SQLException {
        int num = sta.executeUpdate(sql) ;
        if(num>0){
            System.out.println("数据修改成功");
            return true ;
        }
        System.out.println("数据修改失败");
        return false ;
    }

    //查
    public void select(String sql) throws SQLException{
        res = sta.executeQuery(sql) ;
        while (res.next()){
            String code = res.getString("code") ;
            String name = res.getString("name") ;
            String sex = res.getString("sex") ;
            int age = res.getInt("age") ;
            String type = res.getString("type") ;
            double price = res.getDouble("price") ;
            String remark = res.getString("remark") ;
            String attention = res.getString("attention") ;
            System.out.println(code+" "+name+" "+sex+" "+age+" "+type+" "+price+" "+remark+" "+attention);
        }
    }


}

(这里我分别将增删改查都封装在一个类里面,我按照自己的需求进行调用方法即可 , 需要注意的一点是:增 ,删 , 改都是调用executeUpdate的方法,但是查询语句调用的executeJquery的方法,而且返回值也是一个数据集 , 就是查到的所有数据,所以需要用next方法按每行光标不断下移去遍历所有数据据)

7.释放资源


        //关闭
        sta.close();
        connection.close();
        res.close();
三 连接池

     1.三大连接池

 2.连接池概述

    我们不用连接池在写JDBC的时候会发现,我们每次需要连接的时候就创建一个,但是用完必须要销毁,下次要用的话又要重新创建和销毁,这样会显得很麻烦。而连接池就能有已下作用:

  • 用完不销毁,先存起来;
  • 一开始的时候,就初始化多个连接;
  • 给连接加上最大空闲时间限定;
  • 加上最大连接数限定

  3.如果创建连接池

    创建连接池主要分为以下几步:

    1.需要导入连接池相关的jar包(这里使用的c3p0连接池)

       

     2.配置好对应的xml文件  , 写好自己数据库的连接信息

   3.创建连接池

  ComboPooledDataSource mysql = new ComboPooledDataSource("mysql");
        qr = new QueryRunner(mysql);

   4.使用根据执行查询操作

 //查询所有员工信息
    public static  List<Emp> findAllEmps() throws SQLException {
//        List<Emp> list = new ArrayList<>() ;
        String sql = "select * from emp" ;
        List<Emp> query = qr.query(sql, new BeanListHandler<Emp>(Emp.class));

        return query ;


        //预编译sql
//        PreparedStatement preparedStatement = con.prepareStatement(sql);
//        //执行sql语句
//        ResultSet emps = preparedStatement.executeQuery();//返回员工结果集
//        //遍历员工结果集
//        while(emps.next()){
//            int empon = emps.getInt("empno") ;
//            String ename = emps.getString("ename");
//            String job = emps.getString("job") ;
//            int mgr = emps.getInt("mgr") ;
//            Date hiredate = emps.getDate("hiredate") ;
//            Double sal = emps.getDouble("sal") ;
//            Double comm = emps.getDouble("comm") ;
//            int deptno = emps.getInt("deptno") ;
//            list.add(new Emp(empon , ename , job , mgr , hiredate , sal , comm , deptno)) ;
//        }
//        release();//释放资源
//        return list ;
    }

以上就是本周总结,下周见!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值