JDBC中获取 Properties类的对象
问题: 数据库四大参数: 写在代码中, 写死, 修改这个四个参数, 需要去修改源码, 重新编译,
解决方案: 把这四大参数不写在源码中, 需要一个文件存放, 代码中,使用IO流读取文件,
Jdk提供一个 Properties类, 是Map的一个实现类, 存放的也是key/value, 关联硬盘某个文件,要求这个文件的后缀名: .properties(文本文件)
这个文件格式:
Key1=value1
Key2=value2
.....
这个文件一般放在src目录下
推荐写法:
//1.创建Properties类的对象 Properties props = new Properties(); try { //2.加载数据 *** props.load(Thread.currentThread().getContextClassLoader()
.getResourceAsStream("test.properties")); //3.获取数据, 通过key获取value value getProperty(key) System.out.println(props.getProperty("name")); System.out.println(props.getProperty("age")); System.out.println(props.getProperty("sex")); } catch (IOException e) { e.printStackTrace(); }
这个文件路径: 绝对路径, 如果这个项目位置发生变化,这个路径也需要修改,
props.load(new FileInputStream("D:\\code\\代码\\jdbc02\\src\\test.properties"));
使用相对路径:
第一种写法:
Demo2.class.getResourceAsStream() 参考点: Demo2.java所在的目录
要求这个文件与这个类在同一个目录
InputStream in = Demo2.class.getResourceAsStream("test.properties");
文件路径: src/jdbc02/test.properties
第二种写法 Demo2.class.getClassLoader().getResourceAsStream() 参考点: src
InputStream in = Demo2.class.getClassLoader().getResourceAsStream("test.properties");
第三种写法: (推荐)
Thread.currentThread().getContextClassLoader().getResourceAsStream(dbconfig); 参考点:src