Я хочу иметь возможность вставить строку, и если первичный ключ уже существует, он просто обновит строку вместо того, что хочет пользователь. Я могу написать команду UPSERT, но она дает мне ошибку нулевого указателя. Я не уверен почему.
Это мой код:
public PreparedStatement updateStudent(String studentId, String studentName, String sex, java.util.Date birthDate, double gpa) throws SQLException
{
// TODO: Use a PreparedStatement and return it at the end of the method
java.sql.Date sd = new java.sql.Date(birthDate.getTime());
String sql = "INSERT INTO student (sid, sname, sex, birthDate, gpa)
VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE \n" +
"sname=?, sex=?, birthDate=?, gpa=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, studentId);
pstmt.setString(2, studentName);
pstmt.setString(3, sex);
pstmt.setDate(4, sd);
pstmt.setDouble(5, gpa);
pstmt.setString(6, studentName);
pstmt.setString(7, sex);
pstmt.setDate(8, sd);
pstmt.setDouble(9, gpa);
int row = pstmt.executeUpdate();
return pstmt;
}
Это ошибка, которую я получаю:
Updating student 00567454:
Exception in thread "main" java.lang.NullPointerException
at EnrollJDBC.updateStudent(EnrollJDBC.java:349)
at EnrollJDBC.main(EnrollJDBC.java:85)