Java 我有一个奇怪的NullPointerException错误,我问如何修复它?
我是JEE的初学者,我试图从我的db中获取对象,但我遇到了一个nullpointerexception错误,我试图通过System.out.println()找到nullpointerexception的来源(我知道连接传递为null),但失败了,我忘了告诉您我有用于连接的singletonconnection类,我在函数中通过.getconnection()调用它。我还向项目构建路径添加了一个jdbc驱动程序(版本8.0.18)(我询问此错误是否是由于jdbc驱动程序版本所致),Java 我有一个奇怪的NullPointerException错误,我问如何修复它?,java,sql,jakarta-ee,Java,Sql,Jakarta Ee,我是JEE的初学者,我试图从我的db中获取对象,但我遇到了一个nullpointerexception错误,我试图通过System.out.println()找到nullpointerexception的来源(我知道连接传递为null),但失败了,我忘了告诉您我有用于连接的singletonconnection类,我在函数中通过.getconnection()调用它。我还向项目构建路径添加了一个jdbc驱动程序(版本8.0.18)(我询问此错误是否是由于jdbc驱动程序版本所致), 如果有人能帮
如果有人能帮忙,请提前感谢 这是一个连接到数据库的函数,它将我在第
PreparedStatement ps=connection.preparest陈述(“req”)
这是错误日志
HTTP状态500–内部服务器错误
类型异常报告
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
java.lang.NullPointerException
dao.ProduitDaoImpl.produitsParMC(ProduitDaoImpl.java:48)
web.ControleurServelet.doGet(ControleurServelet.java:49)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Note The full stack trace of the root cause is available in the server logs.
这是我的单身连接
public class SingletonConnection {
private static Connection connection;
//le block static charge la classe en mémoire lors de son appel
static{
try {
Class.forName("com.mysql.cj.jdbc.Driver");
try {
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/db-natal","root","");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection() {
return connection;
}
错误表示空指针在Dao和控制器中 尝试在每个文件中的每个行号周围设置断点,以查看在调试模式下发生的情况 它应该能让你很好地了解出了什么问题
您是否将结果集数据设置为对象变量 是的,完全正确,,,似乎连接为空。请替换所有
e.printStackTrace()代码>通过抛出新的运行时异常(e)代码>。这样,您的代码将更快地失败,原因更加明确。现在,您基本上忽略了所有这些e.printStackTrace()
,只关注NullPointerException
,这仅仅是其结果。
public class SingletonConnection {
private static Connection connection;
//le block static charge la classe en mémoire lors de son appel
static{
try {
Class.forName("com.mysql.cj.jdbc.Driver");
try {
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/db-natal","root","");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection() {
return connection;
}