使用JDBC访问数据库时,需要把驱动程序的URL、用户名、密码都写在程序代码中,那么在换用其他数据库或用户的时候,必须要重新修改并编译程序。这样显然为程序开发带来了不便,是否能够让用户脱离程序本身去修改相关的变量设置呢?
这时,我们就需要properties类,实现读取Java配置文件,这样方便维护和修改配置的信息
1.添加.properties文件
在mysql数据库中选中项目src文件夹右击,弹出一个快捷菜单选择"New"--->"File"命令
打开之后的效果:
在“新建文件”窗口中输入*(自定义名字).properties,单击“finish”按钮
创建之后的效果:
2.添加文件内容
创建好之后,需要向配置文件中添加配置信息,把驱动程序的URL、用户名、密码添加到*.properties配置文件中
#文件内容的格式是“键=值”格式
#key=value
#注释信息可以用“#”来注释
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/cars?useUnicode=true&characterEncoding=utf-8
user=root
#我连接数据库的时候没有密码,所以是空的
password=
需要根据自己的配置信息来配置,并且要修改你要连接的数据库名、连接的用户名以及密码
注意: 在properties配置文件中不需要打引号(“”)和分号(;)
等号左边的内容称为键,也就是程序中的变量;
等号右边的内容为键所对应的值,也就是根据实际情况为变量赋的值。
3.读取配置文件
加载MySQL驱动并配置参数的代码
public class BaseDao{
private static String driver; //数据库驱动字符串
private static String url; //连接URL字符串
private static String user; //数据库用户名
private static String password; //用户密码
Connection conn=null; //数据连接对象
//静态代码块,在类加载的时候执行
static {
init();
}
//初始化连接参数,从配置文件中获得
public static void init(){
Properties properties=new Properties();
String configFile="*.properties"; //配置文件的路径
//加载配置文件到输入流中
InputStream is = BaseDao.class.getClassLoader().getResourceAsStream(configFile);
try {
//从输入流中读取属性列表
properties.load(is);
}catch (Exception e){
e.printStackTrace();
}
//根据指定的获取对应的值
driver=properties.getProperty("driver");
url=properties.getProperty("url");
user=properties.getProperty("user");
password=properties.getProperty("password");
}
//省略其他方法的代码…………
}
注释:通过getResourceAsStream(String name)方法获取配置文件“*.properties”的输入流,在通过load(InputStream inStream)方法从输入流中读取属性列表,最后使用getProperty(String key)方法读取到相应值。
将以上读取配置信息的代码封装在init()方法中,在静态代码块中调用,保证加载类时能将数据库配置信息读取到内存中。
还有一种,更加简便的读取方法
public static Connection open(){
//数据库连接对象
Connection conn=null;
//获取连接并捕获异常
try{
//读取属性文件中的数据
Properties pro=new Properties(); //读取配置用的对象
//读取配置文件
//DButil.class 通过当前类得到类加载器得到跟路径下的db配置文件
InputStream is = DBUtil.class.getClassLoader().getResourceAsStream("db.properties");
//对象读取文件流
pro.load(is);
//数据库驱动字符串
Class.forName(pro.getProperty("driver"));
conn = DriverManager.getConnection(pro.getProperty("url"),pro.getProperty("user"),pro.getProperty("password"));
}catch (Exception e){
e.printStackTrace(); //处理异常
}
return conn; //返回连接对象
}
个人认为:这种读取的方法较简单,推荐用第二种读取方法。
希望这篇博客能帮助到大家学习……