作为一名新司,在这个问题上遇到了各种问题,最终还是一一解决了,在此分享一下我这1天1夜的心路历程,希望其他司机在这个地方不要翻车了。
下面是一个DBUtil类,用于管理数据库连接和回收,这里是回收不是关闭,数据库连接最后要回收到连接池中管理。
import mons.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出错怎么办,我的方法是百度,百度不出来怎么办,继续百度吧