Я запускаю свой код с правильной настройкой. Все строки действительно являются строками, а все целые являются целыми. Здесь нет ошибок - программа выполняет обновление без ошибок, и входные значения должны быть такими, какие они должны быть. Например, я беру запись для человека с именем «First Last» и говорю коду изменить его на «Work Please», но после обновления база данных показывает, что она была изменена на «-1 Last». Ничего, кроме FirstName, не меняется, а FirstName меняется на -1 независимо от того, что я вставил.
Соответствующий фрагмент: я отлаживал его до того момента, когда он выполняет его, и все значения есть - даже «Джо». Но вместо этого он решает обновить всю запись без изменений, за исключением того, что 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 = ?";
Что приводит к тому же результату.