连接步骤:

  1. 注册驱动
    Class.forName("com.mysql.jdbc.Driver");
  2. 获取连接对象
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/newdb3", "root", "123456");
    System.out.println(conn);
  3. 创建执行SQL语句的对象
    Statement stat = conn.createStatement();
  4. 执行SQL
    String sql = "create table jdbct1(id int primary key auto_increment,name varchar(10))";
    stat.execute(sql);
  5. 关闭资源
    conn.close();

Statement

  • execute(sql) 执行sql,返回值为布尔值,返回值true代表有结果集 false代表没有结果集,此方法可以执行任意SQL,但是只推荐执行DDL(数据定义语言)
  • executeUpdate(sql) 此方法执行insert、update、delete,返回值int,返回值代表生效行数
  • executeQuery(sql) 此方法执行select 返回值为ResultSet(结果集)

ResultSet

  • 两种获取数据的方式
  1. rs.getString("查询结果中字段的名称");
  2. rs.getString(查询结果中字段的位置); 位置从1开始

连接池DBCP

  • Database Connection Pool 数据库连接池
  • 为什么使用连接池: 将连接重用,避免资源浪费,提高执行效率
    dataSource.setInitialSize(3);//初始连接数量
    dataSource.setMaxActive(5);//最大连接数量

    SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

    PreparedStatement

  • 预编译sql执行对象
  • 好处:
  1. 代码结构整齐,可读性高
  2. 带有预编译功能,在创建对象时就把sql逻辑固定,可以避免sql注入( ' or '1'='1)
  3. 因为带有预编译功能,如果批量插入多条数据时,可以只编译一次sql,从而提高执行效率
  • 当sql语句中没有变量时使用Statement,如果有变量时使用PreparedStatement

    分页查询

          String sql = "select name from jdbcperson "
                  + "limit ?,?";
          PreparedStatement ps = 
                  conn.prepareStatement(sql);
          ps.setInt(1, (page-1)*count);
          ps.setInt(2, count);
          ResultSet rs = ps.executeQuery();
          while(rs.next()) {
              String name = rs.getString(1);
              System.out.println(name);
          }

    事务

  1. 关闭事务自动提交
    conn.setAutoCommit(false)
  2. 提交事务
    conn.commit();
  3. 回滚事务
    conn.rollback();
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄