首页 > 其他分享 >jdbc(3)

jdbc(3)

时间:2024-12-07 14:43:09浏览次数:2  
标签:ps jdbc 连接池 null conn 加载

1.抽象一个dao的父类。
根据我们之前操作数据库表时,封装了很多的dao类,这些dao类他们具有很多相同的代码。
如果我们反复写这些重复的代码 相对比较麻烦。 我们学过继承,是否可以把这些dao类的
公共代码抽取到父类中,然后子类继承该父类。

public class BaseDao {
    protected PreparedStatement ps = null;
    protected Connection conn = null;
    protected ResultSet rs = null;
    //2. 获取连接对象
    private String url = "jdbc:mysql://localhost:3306/qy174";
    private String user = "root";
    private String password = "root";
    //加载驱动---静态代码块--随着类的加载而被加载到内存中,而且只会加载一次。
    static{
        //1. 加载驱动
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
    //获取连接对象
    public void getConn() throws Exception{
        conn = DriverManager.getConnection(url, user, password);
    }
    //通用增删改方法
 public int edit(String sql,Object... params){//Object表示可以接受任意类型的参数  ...:表示可以接受任意个参数

        try {
            getConn();
            //3. 获取执行sql语句的对象。PreparedStatement
            ps = conn.prepareStatement(sql);
            //4. 为占位符赋值
            for (int i = 0; i < params.length; i++) {
                ps.setObject(i+1,params[i]);
            }
            //5.执行sql.
            int i = ps.executeUpdate();
            return i;
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            closeAll();
        }
    }

    //关闭资源
    public void closeAll(){
        try {
            if(rs!=null){
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

抽取到BaseDao父类中,让子类继承。
2.引入数据库连接池
连接池: 它就是一个池子,存放的是连接对象。
为什么使用连接池?
我们在获取连接对象时,发现时间有点长。而且用完后需要关闭连接对象。 连接池中预先存放若干个连接对象,当需要连接对象时,直接从连接池中拿去即可。而且使用完毕后,归还到连接池中就行。
连接池的种类:

如何使用连接池
[1] 引入连接池的依赖jar

[2]创建数据源的属性配置文件。db.properties

# 写上数据库配置信息 key=value  这里的key必须固定
driverClass=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/qy174
username=root
password=root
initialSize=5
maxActive=10

[3]编写代码

标签:ps,jdbc,连接池,null,conn,加载
From: https://www.cnblogs.com/xiaomubupi/p/18592169

相关文章

  • jdbc(1)
    1.jdbc的概述JDBC(JavaDataBaseConnectivity)称为Java数据库连接,它是一种用于数据库访问的应用程序API接口,由一组用Java语言编写的类和接口组成,有了JDBC就可以用统一的语法对多种关系数据库进行访问,而不用担心其数据库操作语言的差异。有了JDBC,就不必为访问Mysql数据库专门......
  • JDBC进阶
    JDBC进阶在使用JDBC操作数据库时,我们会发现数据都是零散的,明在数据库中是一行完整的数据,到了Java中变成了一个一个的变量,不利于维护和管理。而我们Java是面向对象的,一个表对应的是一个类,一行数据就对应的是Java中的一个对象,一个列对应的是对象的属性,所以我们要把数据存储......
  • JDBC入门
    JDBC入门​JDBC(JavaDatabaseConnectivity)是Java提供的一种标准API,用于连接和操作关系型数据库。它是Java程序和数据库之间的桥梁,允许开发人员通过Java代码与数据库交互,执行查询、更新和其他数据库操作。一、JDBC的快速入门官网下载数据库连接驱动jar包。https:......
  • JDBC连接数据库实现增删改查
    这里为了方便展览,我直接写到了一个类里面,其中也涉及了一些前端交互要注意其中的sql语句的对象,可以根据自己的数据库内容名称进行修改这个是原本的表importjavax.servlet.;importjavax.servlet.http.;importjavax.servlet.annotation.;importjava.io.IOException;import......
  • JDBC链接数据库
    1.首先我们需要下载mysql的官网jar包https://dev.mysql.com/downloads/connector/j/这个版本比较新然后打开idea创建一个项目下面是链接代码,记得看注释packagecom.stu.jdbc;//我的包的名字叫com.stu.jdbc,报错可以删除importjava.sql.*;publicclassJDBC{//这个类的名......
  • java与数据库连接学习,JDBC
    一、JDBC概述JDBC(JavaDataBaseConnectivity)是Java用于数据库访问的应用程序API接口,由一系列Java类和接口构成。它提供了统一的语法来操作多种关系型数据库,屏蔽了不同数据库操作语言的差异。这意味着开发人员无需为每种数据库编写特定的访问程序,大大提高了数据库访问......
  • sharding-jdbc分表场景下的分页查询优化
    背景欢迎来到Java学院,我们学院学员众多,每年都要招收新学员。但是,我们学院并没有“毕业”这一机制,所以年复一年学员的数量就越来越多。咱们学院每年都有一次大考,需要统计所有学员的成绩,并按排名的先后顺序公示给大家。第一年我们招收了1,000名学员。在一年过后,我们的公示栏分为......
  • Java程序操作数据库——JDBC
    JDBC想要通过Java程序操作关系型数据库,就需要使用JDBC(JavaDataBaseConnectivity),JDBC就是使用Java程序操作关系型数据库的一套API(Java官方提供的)。很多高级的操作数据库的框架(如MyBatis、MyBatisPlus等)底层都是基于JDBC的,是对JDBC的高级封装;所以说了解原生的JDBC的操作是十分......
  • 把ojdbc7加入到本地maven仓库
    问题测试项目用到了  ojdbc7的12.2.0.1这个版本,在阿里云的仓库没有找到<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc7</artifactId> <version>12.2.0.1</version></dependency>解决过程去mvnrepository也没有找到对应的版本https://......
  • JDBC API
    1.DriverManager1》注册驱动,mysql8以上版本可省2》连接数据库2.Connection1》获取执行sql对象2》管理事务(统一失败)3.Statement1》执行sql语句4.ResultSet创建集合Listaccounts=newArrayList<类名>();accounts为集合名往集合中添加类accounts.add(类名);打印集......