Пишу веб - приложение на Java для курсовой работы. При запуске выдает ошибку
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 Зарание, спасибо
Поскольку вы получаете null в аргументах указанного метода в переменной типа Connection, то и рыть стоит в торону класса, соединения раздающего.
Посему сделайте так... Для начала подключите в качестве jdbc-драйвера вот этот https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.45
Насколько я понял, класс, раздающий коннекты MySQLConnUtils
Напишите его таким образом
import com.mysql.fabric.jdbc.FabricMySQLDriver;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLConnUtils {
public static Connection getMySQLConnection() throws SQLException {
String hostName = "localhost";
String dbName = "salvage_service";
String dbPort = "3306";
String userName = "root";
String password = "qweqwe123123";
String connectionURL = "jdbc:mysql://" + hostName + ":" + dbPort + "/" + dbName;
Driver driver = new FabricMySQLDriver();
DriverManager.registerDriver(driver);
return DriverManager.getConnection(connectionURL, userName, password);
}
}
Если не получится , то пишите, какая ошибка летит
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости