代码如下:
Properties prop = new Properties();
ClassLoader cl = Demo.class.getClassLoader();
URL res = cl.getResource("test.properties");
String path = res.getPath();
try {
prop.load(new FileReader(path));
} catch (IOException e) {
e.printStackTrace();
}
String url = prop.getProperty("url");
String user = prop.getProperty("user");
String password = prop.getProperty("password");
Connection connect = DriverManager.getConnection(url, user, password);
Statement state = connect.createStatement();
ResultSet resultSet = state.executeQuery("select * from emp");
while(resultSet.next()){
int id = resultSet.getInt(1);
System.out.println(id);
}
state.close();
connect.close();
test.properties如果放在src外面和src同级,则会在String path = res.getPath();报错NullPointerException
test.properties如果放在src内,则会有如下报错:
java.io.FileNotFoundException: D:\1.%e5%9e%83%e5%9c%be%e7%ab%99\JAVAWEB\JDBC\out\production\JDBC\test.properties (系统找不到指定的路径。)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
at java.base/java.io.FileInputStream.(FileInputStream.java:157)
at java.base/java.io.FileInputStream.(FileInputStream.java:112)
at java.base/java.io.FileReader.(FileReader.java:60)
at DQL查询练习2.Demo.main(Demo.java:59)
Exception in thread "main" java.sql.SQLException: The url cannot be null
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:660)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
at DQL查询练习2.Demo.main(Demo.java:67)
67行是:Connection connect = DriverManager.getConnection(url, user, password);
59行是:prop.load(new FileReader(path));
我本想用getResource("")获取项目路径的再通过+"\src\test.properties"组合的,结果这条路好像行不通
空指针是由于没有获取到参数导致的。
很明显的报错The url cannot be null
建议找一篇Property的文档好好看一看。
放在src里面。
new ClassPathResource("test.properties").getInputStream()
test.properties放错位置了,看你的报错,要放到
JAVAWEB\JDBC\out\production\JDBC
解决了,不应该用getResource获取地址,应当用getResourceAsStream
而prop应当接收如下的代码就行:
prop.load(Demoi.class.getClassLoader().getResourceAsStream("test.properties"));
还有test.properties应当在src目录下,如果要将其放在src同级别的位置旁应当这样写:
prop.load(new FileReader("test.properties"));