搜索
您的当前位置:首页正文

Java连接数据库的五种方式(附新增方式)

来源:易榕旅网

*常用第五种方式

方式一

@Test
public void Test() throws SQLException {
    //创建数据库的驱动 mysql下的驱动
    Driver driver = new com.mysql.cj.jdbc.Driver();
    //url 代表要访问指定的数据库名 访问路径
    //jdbc: 主协议  mysql:  子协议
    //localhost 本机ip
    //3306  端口号
    //jdbc_learn  数据库名字 以及编码格式
    String url = "jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";

    //获取一个处理配置文件的对象
    Properties pro = new Properties();
    //传入用户名和密码
    pro.setProperty("user","root");
    pro.setProperty("password","123456");
    //用mysql驱动获取一个连接对象
    Connection conn = driver.connect(url,pro);
    System.out.println(conn);
}

方式二

@Test
public void Test1() throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException {
    //利用反射获取驱动的类
    Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
    //用驱动的类获取一个驱动对象
    Driver driver = (Driver) aClass.newInstance();

   String url = "jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
   Properties pro = new Properties();
   pro.setProperty("user","root");
   pro.setProperty("password","123456");

    Connection connect = driver.connect(url,pro);
    System.out.println(connect);
}

方式三

@Test
public void Test2() throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException {
    //利用反射获取驱动的类
    Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
    //用驱动的类获取一个驱动对象
    Driver driver = (Driver) aClass.newInstance();

    String url = "jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
    String user = "root";
    String password = "123456";

    //注册驱动
    DriverManager.registerDriver(driver);
    //获取连接
    Connection conn = DriverManager.getConnection(url, user, password);
    System.out.println(conn);
}

方式四

@Test
public void Test3() throws ClassNotFoundException, SQLException {
    String url = "jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
    String user = "root";
    String password = "123456";

    //Driver类再加载的时候已经注册了驱动 所以不必再写多余的代码
    Class.forName("com.mysql.cj.jdbc.Driver");

    //获取连接
    Connection conn = DriverManager.getConnection(url, user, password);
    System.out.println(conn);
}

方式五

将数据库连接需要的4个基本信息声明在配置文件中,通过读取配置文件的方式,获取连接

1.编写配置文件 jdbc.properties 位置在模块的src下

user=root
password=253797
url=jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
DriverClass=com.mysql.cj.jdbc.Driver

2.编写主体代码

@Test
public void Test4() throws ClassNotFoundException, SQLException, IOException {
    //创建容器 处理配置文件
    Properties pro = new Properties();
    //将配置文件放入一个输出流中
    FileInputStream fis = new FileInputStream("src//jdbc.properties");
    
    //加载配置文件到容器中
    pro.load(fis);
    //注册驱动
    Class.forName("DriverClass");

    //方法调用容器中的属性
    Connection conn = DriverManager.getConnection(pro.getProperty("url"),pro.getProperty("user"),pro.getProperty("password"));
    System.out.println(conn);
}

方式五(额外写法)

@Test
public void Test5() throws IOException, ClassNotFoundException, SQLException {

    //通过类的加载器创建一个输出流  获取类路径下的指定文件的输出流
    InputStream is = Collection.class.getClassLoader().getResourceAsStream("jdbc.properties");
    //创建容器对象  用于处理配置文件
    Properties pro = new Properties();
    //加载配置文件到容器中
    pro.load(is);

    //注册驱动
    Class.forName(pro.getProperty("DriverClass"));

    //将数据存到字符串中
    String url = pro.getProperty("url");
    String user = pro.getProperty("user");
    String password =  pro.getProperty("password");
    
    //获取连接
    Connection conn = DriverManager.getConnection(url,user,password);
    System.out.println(conn);

}

第五种的好处

*1.实现了数据与代码的分离。实现了解耦

*2.如里雪要修改配置文件信息,可以避免程序重新打包。

新增连接池——hikariCP

public class HikariJDBC {
    //创建连接池配置文件
    static HikariConfig hikariConfig = new HikariConfig();
    static {
        //对配置文件进行配置	内置很多配置选项
        hikariConfig.setDriverClassName("com.mysql.jdbc.Driver");
        hikariConfig.setJdbcUrl("jdbc:mysql://master:3306/school");
        hikariConfig.setUsername("root");
        hikariConfig.setPassword("123456");
        hikariConfig.addDataSourceProperty("useSSL", "false");
    }

    //每次调用方法就会从连接池中获取一个连接
    public static Connection getConnection() throws SQLException {
        //获取连接池
        HikariDataSource ds = new HikariDataSource(hikariConfig);
        
        return ds.getConnection();
    }


    //关闭连接
    public static void closeSource(Connection conn){
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top