当前位置: 首页 > article >正文

通过properties文件连接数据库

1.简介

通过properties写数据库的配置,以后换数据库配置只要改properties文件,当然以后配置我直接从这CV了,争做合格的cv工程师。

2.db.properties文件:

#DBUtil的配置文件  存放的都是键值对的数据   key=value
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/ibox
username=root
password=root

3.DBUtil类 连接数据库的工具类

package com.example.util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class DBUtil {
    //驱动全类名
    private static String driverClassName;
    //连接的url
    private static String url;
    //用户名
    private static String username;
    //密码
    private static String password;

    static {
        try {
            //1.通过类对象获取类加载器
            ClassLoader classLoader = DBUtil.class.getClassLoader();
            //2.通过输入流读取db.properties文件
            InputStream stream = classLoader.getResourceAsStream("db.properties");
            //3.创建properties对象
            Properties properties = new Properties();
            //4.通过properties对象加载文件
            properties.load(stream);
            //5.用properties通过key拿value
            driverClassName = properties.getProperty("driverClassName");
            url = properties.getProperty("url");
            username = properties.getProperty("username");
            password = properties.getProperty("password");
            //6.加载数据库驱动
            Class.forName(driverClassName);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取连接
     * @return
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        //通过驱动管理拿到数据库连接返回连接对象
        return DriverManager.getConnection(url,username,password);
    }
    /**
     * 关闭连接
     *
     */
    public static void close(Connection conn, PreparedStatement ps, ResultSet rs){
        //如果连接未关闭,则关闭连接
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(ps!=null){
            try {
                ps.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}


http://www.kler.cn/a/280948.html

相关文章:

  • Spark MLlib模型训练—分类算法Factorization machines classifier
  • 字母的大小写转换(tolower、toupper、transform)
  • golang笔记——Go堆内存管理
  • ES 根据条件删除文档
  • 畅玩游戏:2024四大远程控制软件推荐!
  • php邮件系统怎么安装和集成到现有系统中?
  • Java零基础-如何解决分布式系统中的依赖冲突问题?
  • PHP教育培训企业小程序多端平台系统源码
  • Qt/QML学习-Drawer
  • 【快速选择算法】解决TopK问题中前K小的数字问题
  • 【已上线】C++ mysql连接池
  • 个人博客系统项目大全【6万字】
  • 网络缓存:加速网络应用的隐形引擎
  • 【numpy1】ipython模块、jupyter模块、Anaconda主要功能、notebook详细功能、数据分析三剑客、numpy实现BMI指数
  • cuda,torch,paddle向下兼容
  • fabricjs 添加图片并实时更新小车位置
  • 游戏开发设计模式之单例模式
  • 《javaEE篇》--线程池
  • [Algorithm][综合训练][消减整数][最长上升子序列(二)][春游]详细讲解
  • CCF CSP题解:因子化简(202312-2)