Java& SQL:ExecuteUpdate()/ UPDATE没有正确更新记录

时间:2011-03-20 21:03:44

标签: java sql sql-update record

我在正确完成设置的情况下运行我的代码。所有的字符串都是字符串,所有的字符都是整数。这里没有错误 - 程序执行更新而没有错误,输入值就是它们应该是的。例如,我记录名为“First Last”的人的记录,并告诉代码将其更改为“Work Please”,但更新后,数据库显示它已更改为“-1 Last”。只有FirstName更改 - 并且无论我放入什么,FirstName都会更改为-1。

相关片段:我已将其调试到执行它的位置,所有值都在那里 - 甚至是“Joe”。但相反,除了FName为“0”或“-1”之外,它决定更新整个记录而不做任何更改。

sql = "UPDATE Member SET FName = ? and LName = ? and Email = ? and "
                                + "Year = ? and Shirt = ? and Comm = ? and Phone = ? and PPhone = ? and Events = ? where MemberID = ? ";
pstmt = dbConnection.prepareStatement(sql);
pstmt.setString(1, "Joe");
pstmt.setString(2, tempm.getName().split(" ")[1]);
pstmt.setString(3, tempm.getEmail());
pstmt.setInt(4, tempm.getYear());
pstmt.setInt(5, tempm.getShirt());
pstmt.setInt(6, tempm.getComm());
pstmt.setString(7, phonea[0]);
pstmt.setString(8, phonea[1]);
pstmt.setString(9, tempm.getEvents());
pstmt.setInt(10, tempm.getmID());
pstmt.executeUpdate();

从和更改,给出

sql = "UPDATE Member SET FName = ?, LName = ?, Email = ?, "
                                + "Year = ?, Shirt = ?, Comm = ?, Phone = ?, PPhone = ?, Events = ? where MemberID = ?";       

导致相同的结果。

2 个答案:

答案 0 :(得分:3)

您应该在更新语句中使用逗号而不是and

sql = "UPDATE Member SET FName = ?, LName = ?, ... WHERE MemberID = ?";

您当前的查询被解释为:

sql = "UPDATE Member SET FName = (? AND LName = ? AND ...) WHERE MemberID = ?";

括号中的部分是一个布尔表达式,其中=是相等比较运算符,而不是您想要的赋值。

答案 1 :(得分:1)

也许尝试用''

来围绕你的答案

我记得有类似的问题,一旦我这样做就修好了,但没有承诺。