用druid连接池连接数据库为什么会出现空指针异常
source link: https://bbs.csdn.net/topics/399173375
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
用druid连接池连接数据库为什么会出现空指针异常
package
com.zyj.school.util;
import
com.alibaba.druid.pool.DruidDataSource;
import
com.alibaba.druid.pool.DruidDataSourceFactory;
import
javax.sql.DataSource;
import
java.io.IOException;
import
java.io.InputStream;
import
java.sql.Connection;
import
java.sql.ResultSet;
import
java.sql.SQLException;
import
java.sql.Statement;
import
java.util.Properties;
public
class
DruidUtil {
/**
* 数据库连接池中有多个连接
* 所以将con改变为DataSource
*/
// 数据源获得数据连接源con
private
static
DruidDataSource datasource;
public
static
DataSource getDatasource() {
return
datasource;
}
// 静态块 减少代码量 优化代码
static
{
try
{
Properties pro = readproperties();
System.out.println(
"Druid"
+pro);
datasource = (DruidDataSource) DruidDataSourceFactory.createDataSource(pro);
System.out.println(
"数据库连接成功!"
);
}
catch
(Exception e) {
e.printStackTrace();
System.out.println(
"数据库连接失败!"
);
}
}
// 读方法 读取硬盘中的ojdbc.properties文件信息
public
static
Properties readproperties() {
// 通过类加载器
InputStream inputstream = DruidUtil.
class
.getClassLoader().getResourceAsStream(
"DruidPool.properties"
);
// 数据类型
Properties pro =
new
Properties();
try
{
pro.load(inputstream);
}
catch
(IOException e) {
e.printStackTrace();
}
return
pro;
}
// 获取连接 datasource获得connection
public
static
Connection getCon() {
Connection connection =
null
;
try
{
connection = datasource.getConnection();
}
catch
(SQLException e) {
e.printStackTrace();
System.out.println(e+
"datasource获得connection出现问题"
);
return
null
;
}
return
connection;
}
// 关闭数据库相关连接
public
static
void
closeConnection(ResultSet rs,Connection conn,Statement state)
throws
Exception {
if
(rs!=
null
) {
rs.close();
// System.out.println("数据库rs关闭成功!");
}
if
(state!=
null
) {
state.close();
// System.out.println("数据库pstate关闭成功!");
}
if
(conn!=
null
) {
conn.close();
// System.out.println("数据库con关闭成功!");
}
System.out.println(
"数据库关闭成功!"
);
}
}
java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:434)
at java.util.Properties.load0(Properties.java:353)
at java.util.Properties.load(Properties.java:341)
at com.zyj.school.util.DruidUtil.readproperties(DruidUtil.java:44)
at com.zyj.school.util.DruidUtil.<clinit>(DruidUtil.java:28)
at com.zyj.school.dao.LoginDaoImpl.<init>(LoginDaoImpl.java:19)
at com.zyj.school.service.LoginServiceImpl.<init>(LoginServiceImpl.java:19)
at com.zyj.school.controller.LoginServlet.doPost(LoginServlet.java:36)
at com.zyj.school.controller.LoginServlet.doGet(LoginServlet.java:29)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:663)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
at com.zyj.school.filter.SchoolFilter.doFilter(SchoolFilter.java:24)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:353)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:870)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1696)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
数据库连接失败!
有没有大佬知道这个问题应该怎么解决
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK