gpt4 book ai didi

java - 使用 JDBC 和 JSP 的 UPSERT MYSQL 命令

转载 作者:行者123 更新时间:2023-11-29 16:46:20 25 4
gpt4 key购买 nike

我希望能够插入一行,如果主键已经存在,它只会更新该行,而不是用户想要的内容。我可以编写 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)

最佳答案

问题是birthDate为null,并且java.util.Date到java.sql.Date的转换不为null。所以如果birthDate为空我必须添加一个if else语句

关于java - 使用 JDBC 和 JSP 的 UPSERT MYSQL 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53091409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com