6

用druid连接池连接数据库为什么会出现空指针异常

 3 years ago
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.
neoserver,ios ssh client

用druid连接池连接数据库为什么会出现空指针异常

Java code?
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)
数据库连接失败!
有没有大佬知道这个问题应该怎么解决


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK