Witam, próbuję zmodyfikować wpis w bazie danych jednak, łapie mi wyjątek NullPointerException :/ Czy ma ktoś pomysł jak z z tym sb poradzic?
Poniżej kod oraz miejsca, w których jest łapany wyjątek wyjątek:
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
abstract public class Query {
protected String sql;
protected Connection connection;
private Statement statement;
protected ResultSet resultSet;
public Query(){
this("");
}
public Query(String sql) {
this.sql = sql;
}
public void execute() throws SQLException, ClassNotFoundException {
execute(new HashMap<>());
}
public void execute(Map<String ,Object> context) throws SQLException, ClassNotFoundException {
try {
connectToDataBase();
transformSQL(context);
executeSQL();
process(context);
close(); ****-------------------------------------------------------------------------------WYJĄTEK------------------------------------------------------------------------------------------
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
protected void transformSQL(Map<String ,Object> context) { }
private void connectToDataBase() throws ClassNotFoundException, SQLException {
Class.forName("org.postgresql.Driver");
// "jdbc:postgresql://nazwahosta:port/
// nazwabazy","uzytkownik", "haslo"
connection = DriverManager.getConnection(
"jdbc:postgresql://localhost:5432" +
"/footballPlayers", "postgres", "postgres");
}
private void executeSQL() throws SQLException {
statement = connection.createStatement();
if(sql == null || sql.trim().equals(""))
{
return;
}
// wykonywanie SQL
resultSet = statement.executeQuery(sql);
}
abstract protected void process(Map<String, Object> context) throws SQLException;
private void close() throws SQLException {
resultSet.close(); ****-------------------------------------------------------------------------WYJĄTEK---------------------------------------------------------------------------------------
statement.close();
connection.close();
}
}
import KonkretnyPilkarz.EditPilkarz;
import java.sql.*;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
public class AktualizujPilkarz extends Query {
@Override
protected void process(Map<String, Object> context) throws SQLException {
EditPilkarz pilkarz = (EditPilkarz) context.get("pilkarz");
PreparedStatement preparedStatement = connection.prepareStatement
(
"UPDATE pilkarz SET imie= ?, nazwisko= ?,waga= ?,wzrost= ?,data_urodzenia= ?,aktualna_cena= ?,\n" +
"Fk_kraj= ?,Fk_noga= ?,Fk_pozycja= ?,Fk_sponsor= ?,Fk_klub= ?\n" +
"WHERE id=?\n" +
"\n"
);
preparedStatement.setString(1,pilkarz.getImie());
preparedStatement.setString(2,pilkarz.getNazwisko());
preparedStatement.setString(3,pilkarz.getWaga());
preparedStatement.setString(4,pilkarz.getWzrost());
preparedStatement.setDate(5,pilkarz.getData_urodzenia());
preparedStatement.setString(6, pilkarz.getAktualna_cena());
preparedStatement.setInt(7, pilkarz.getFk_kraj());
preparedStatement.setInt(8,pilkarz.getFk_noga());
preparedStatement.setInt(9,pilkarz.getFk_pozycja());
preparedStatement.setInt(10,pilkarz.getFk_sponsor());
preparedStatement.setInt(11,pilkarz.getFk_klub());
preparedStatement.setInt(12,pilkarz.getId());
preparedStatement.execute();
}
public static void main(String [] args) throws SQLException, ClassNotFoundException {
AktualizujPilkarz aktualizujPilkarz = new AktualizujPilkarz();
Map<String,Object> context = new HashMap<String, Object>();
EditPilkarz pilkarz = new EditPilkarz(1,"Marco","Reus","73","185",
new java.sql.Date(85,11,3),"76.980.000$",12,2,3,
1,17);
//System.out.println(pilkarz);
context.put("pilkarz",pilkarz);
aktualizujPilkarz.execute(context);**** -----------------------------------------WYJĄTEK-----------------------------------------------------
}
}
Bardzo proszę o pomoc,
pozdrawiam :)