我正在用 Java 为学期论文编写一个 Web 应用程序。启动时出现错误
SEVERE: Servlet.service() for servlet [tanat.servlet.IceFloeList] in context with path [/SalvageService] threw exception
java.lang.NullPointerException
at tanat.database.DBUtils.queryIceFloe(DBUtils.java:19)
at tanat.servlet.IceFloeList.doGet(IceFloeList.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
发誓,因为我了解这门课
package tanat.database;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import tanat.beans.IceFloe;
public class DBUtils {
public static List<IceFloe> queryIceFloe(Connection conn) throws SQLException {
String sql = "SELECT `id`, `name_ice_floe`, ` number_of_fishermen` "
+ "FROM ice_floe ORDER BY 'number_of_fishermen' DESC;";
PreparedStatement pstm = conn.prepareStatement(sql); //на эту строку ругается
ResultSet rs = pstm.executeQuery();
List<IceFloe> list = new ArrayList<IceFloe>();
//пробывал через статмент ничего не меняеться
// Statement statement = conn.createStatement();
// ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("ID");
String name = rs.getString("Name");
int numberOfFishermen = rs.getInt("NumberOfFishermen");
IceFloe iceFloe = new IceFloe();
iceFloe.setId(id);
iceFloe.setNameIceFloe(name);
iceFloe.setNumberOfFishermen(numberOfFishermen);
list.add(iceFloe);
}
return list;
}
public static IceFloe findIceFloe(Connection conn, String code) throws SQLException {
String sql = "Select a.Code, a.Name, a.Price from Product a where a.Code=?";
PreparedStatement pstm = conn.prepareStatement(sql);
pstm.setString(1, code);
ResultSet rs = pstm.executeQuery();
while (rs.next()) {
String name = rs.getString("Name");
int numberOfFishermen = rs.getInt("NumberOfFishermen");
IceFloe iceFloe = new IceFloe();
iceFloe.setNameIceFloe(name);
iceFloe.setNumberOfFishermen(numberOfFishermen);
return iceFloe;
}
return null;
}
public static void updateIceFloe(Connection conn, IceFloe iceFloe) throws SQLException {
String sql = "Update Product set Name =?, Price=? where Code=? ";
PreparedStatement pstm = conn.prepareStatement(sql);
pstm.setInt(1, iceFloe.getId());
pstm.setString(2, iceFloe.getnameIceFloe());
pstm.setInt(3, iceFloe.getNumberOfFishermen());
pstm.executeUpdate();
}
public static void insertIceFloe(Connection conn, IceFloe iceFloe) throws SQLException {
String sql = "Insert into Product(Code, Name,Price) values (?,?,?)";
PreparedStatement pstm = conn.prepareStatement(sql);
pstm.setInt(1, iceFloe.getId());
pstm.setString(2, iceFloe.getnameIceFloe());
pstm.setInt(3, iceFloe.getNumberOfFishermen());
pstm.executeUpdate();
}
//удаление льдины
//по идее нужно реализовать автоматическое удаление если количество рыбаков становиться равным 0
public static void deleteIceFloe(Connection conn, String code) throws SQLException {
String sql = "Delete From Product where Code= ?";
PreparedStatement pstm = conn.prepareStatement(sql);
pstm.setString(1, code);
pstm.executeUpdate();
}
}
请帮帮我,我已经摆弄了3天,剩下的时间不多了)如果您需要查看其他课程:https ://bitbucket.org/pahan-titan/salvageservice/src 提前谢谢
由于您在 Connection 类型的变量中的指定方法的参数中得到 null,因此值得深入研究分发连接的类的方向。
因此,这样做...首先,连接这个 https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.45作为jdbc驱动
据我了解,分发 MySQLConnUtils 连接的类
像这样写
如果它不起作用,那么写出什么错误