作为一名新司,在这个问题上遇到了各种问题,最终还是一一解决了,在此分享一下我这1天1夜的心路历程,希望其他司机在这个地方不要翻车了。
下面是一个DBUtil类,用于管理数据库连接和回收,这里是回收不是关闭,数据库连接最后要回收到连接池中管理。
import org.apache.commons.dbcp.BasicDataSource;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.util.Properties;
/**
* 该类用于管理数据库连接
*/
public class DBUtil {
private static BasicDataSource ds;
static{
Properties prop =new Properties();
try {
prop.load(DBUtil.class.getClassLoader().getResourceAsStream("util/config.properties"));
String className=prop.getProperty("classname");
String url=prop.getProperty("url");
String username=prop.getProperty("username");
String password=prop.getProperty("password");
int maxActive=Integer.parseInt(prop.getProperty("maxactive"));
int maxWait=Integer.parseInt(prop.getProperty("maxwait"));
//初始化连接池
ds=new BasicDataSource();
//将JDBC建立连接所需要的信息设置到连接池中
ds.setDriverClassName(className);
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
ds.setMaxActive(maxActive);
ds.setMaxWait(maxWait);
} catch (FileNotFoundException e) {
System.out.println("打开文件失败");
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
//建立连接
public static Connection getConnection() throws Exception{
return ds.getConnection();
}
//关闭给定连接
public static void closeConnection(Connection conn){
/*
* 若该连接是通过连接池获取的,那么调用
* 这个连接的close方法并不是与数据库断开
* 连接了,而仅仅是将该连接还给连接池。
*/
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception{
Connection conn=DBUtil.getConnection();
System.out.println(conn);
DBUtil.closeConnection(conn);
}
}
1路径问题 config.properties 这个如果直接放在src包下,则直接写
prop.load(DBUtil.class.getClassLoader().getResourceAsStream("config.properties"));
路径写错我的控制台报错为
java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at util.DBUtil.<clinit>(DBUtil.java:22)
Exception in thread "main"
并且会有弹窗。
2导包。总共导入4个包
3出错怎么办,我的方法是百度,百度不出来怎么办,继续百度吧