JDBC数据库连接池常用的三种实现方式

JDBC概念原理

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。是Java访问数据库的标准规范。

  • JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
  • JDBC需要连接驱动,驱动是两个设备要进行通信,满足一定通信数据格式,数据格式由设备提供商规定,
    设备提供商为设备提供驱动软件,通过软件可以与该设备进行通信。

JDBC原理:Java提供访问数据库规范称为JDBC,而生产厂商提供规范的实现类称为驱动。JDBC是一套API接口(Sun公司定义的类或接口),驱动是接口的实现,没有驱动将无法完成数据库连接,从而不能操作数据库!每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都由数据库生成厂商提供。

总结

  • JDBC是java提供给开发人员的一套操作数据库的接口
  • 数据库驱动就是实现该接口的实现类 

mysql建数据库、创建表

CREATE TABLE `user` (
  `userid` INT(11) NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(255) DEFAULT NULL,
  `password` VARCHAR(255) DEFAULT NULL,
  `email` VARCHAR(255) DEFAULT NULL,
  `phone` VARCHAR(255) DEFAULT NULL,
  `status` VARCHAR(255) NOT NULL DEFAULT '0',
  `code` VARCHAR(255) DEFAULT NULL,
  PRIMARY KEY (`userid`)
) ENGINE=INNODB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;


 #创建数据库
  create database mybase;
  #使用数据库
  use mybase;
  ###创建分类表
  create table sort(
    sid int PRIMARY KEY AUTO_INCREMENT,
    sname varchar(100),
    sprice DOUBLE,
    sdesc VARCHAR(500)
  );

案例代码

//JDBCUtils工具类代码
  public class JDBCUtils {
      private JDBCUtils(){}
      private static Connection con ;
      
      static{
          try{
              Class.forName("com.mysql.jdbc.Driver");
              String url = "jdbc:mysql://localhost:3306/test";
              String username="root";
              String password="123";
              con = DriverManager.getConnection(url, username, password);
          }catch(Exception ex){
              throw new RuntimeException(ex+"数据库连接失败");
          }
      }
      
      /*
       * 定义静态方法,返回数据库的连接对象
       */
      public static Connection getConnection(){
          return con;
      }
      
      
      public static void close(Connection con,Statement stat){
           
           if(stat!=null){
               try{
                   stat.close();
               }catch(SQLException ex){}
           }
           
           if(con!=null){
               try{
                   con.close();
               }catch(SQLException ex){}
           }
           
      }
      
      
      public static void close(Connection con,Statement stat , ResultSet rs){
           if(rs!=null){
               try{
                   rs.close();
               }catch(SQLException ex){}
           }
           
           if(stat!=null){
               try{
                   stat.close();
               }catch(SQLException ex){}
           }
           
           if(con!=null){
               try{
                   con.close();
               }catch(SQLException ex){}
           }
           
      }
  }
//测试JDBCUtils工具类的代码
public class TestJDBCUtils {
  public static void main(String[] args)throws Exception {
      Connection con = JDBCUtils.getConnection();
      PreparedStatement pst = con.prepareStatement("SELECT sname FROM user");
      ResultSet rs = pst.executeQuery();
      while(rs.next()){
          System.out.println(rs.getString("sname"));
      }
      JDBCUtils.close(con, pst, rs);
  }

 

数据表数据存储对象

  //定义实体类Sort
  public class Sort {
  private int sid;
  private String sname;
  private double sprice;
  private String sdesc;
  public Sort(int sid, String sname, double sprice, String sdesc) {
      this.sid = sid;
      this.sname = sname;
      this.sprice = sprice;
      this.sdesc = sdesc;
  }
  public Sort(){}
  public int getSid() {
      return sid;
  }
  public void setSid(int sid) {
      this.sid = sid;
  }
  public String getSname() {
      return sname;
  }
  public void setSname(String sname) {
      this.sname = sname;
  }
  public double getSprice() {
      return sprice;
  }
  public void setSprice(double sprice) {
      this.sprice = sprice;
  }
  public String getSdesc() {
      return sdesc;
  }
  public void setSdesc(String sdesc) {
    
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值