使用 jdbc 更新记录时出错
Error while updating records using jdbc
我收到一个错误:
java.sql.SQLException: Invalid column index
我尝试检查代码和数据库中的拼写错误以及列名及其类型。错误本身看起来很明显并且不言自明,但我无法找到错误。此代码可能有什么问题:
public class MailActivationDAO {
public void verifyMail(String mailToken, String email) {
Connection con = null;
ResultSet rs = null;
try {
String userStatus = "";
con = DBConnection.getConnection();
String query1 = "SELECT USR_TOKEN, USR_STATUS FROM TBL_USER WHERE USR_PRIMARY_EMAIL=?";
PreparedStatement statement = con.prepareStatement(query1);
statement.setString(1, email);
try {
rs = statement.executeQuery();
while (rs.next()) {
String token = rs.getString("USR_TOKEN");
userStatus = rs.getString("USR_STATUS");
System.out.println("user status before activation: " + userStatus);
if (mailToken.equalsIgnoreCase(token) && userStatus.equalsIgnoreCase("PENDING")) {
userStatus = "ACTIVE";
System.out.println("user status after activation: " + userStatus);
}
}
} catch (Exception e) {
System.out.println("Error in selecting records");
e.printStackTrace();
}
try {
String query2 = "UPDATE TBL_USER SET USR_STATUS=? WHERE USR_PRIMARY_EMAIL=?";
con.prepareStatement(query2);
statement.setString(1, userStatus);
statement.setString(2, email);
int result = statement.executeUpdate();
if (result > 0) {
System.out.println("User activated successfully!");
}
} catch (Exception e) {
System.out.println("Error in updating records");
e.printStackTrace();
}
} catch (Exception e) {
System.out.println("Wrong query");
e.printStackTrace();
} finally {
try {
rs.close();
} catch (SQLException ex) {
Logger.getLogger(MailActivationDAO.class.getName()).log(Level.SEVERE, null, ex);
}
if (con != null) {
try {
con.close();
} catch (SQLException ex) {
Logger.getLogger(MailActivationDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
注意:我在更新记录捕获块时出错
您为 UPDATE 创建准备好的语句
con.prepareStatement(query2);
但不要将其分配给仍然包含 SELECT 语句的变量 statement
。
因此
statement = con.prepareStatement(query2);
我收到一个错误:
java.sql.SQLException: Invalid column index
我尝试检查代码和数据库中的拼写错误以及列名及其类型。错误本身看起来很明显并且不言自明,但我无法找到错误。此代码可能有什么问题:
public class MailActivationDAO {
public void verifyMail(String mailToken, String email) {
Connection con = null;
ResultSet rs = null;
try {
String userStatus = "";
con = DBConnection.getConnection();
String query1 = "SELECT USR_TOKEN, USR_STATUS FROM TBL_USER WHERE USR_PRIMARY_EMAIL=?";
PreparedStatement statement = con.prepareStatement(query1);
statement.setString(1, email);
try {
rs = statement.executeQuery();
while (rs.next()) {
String token = rs.getString("USR_TOKEN");
userStatus = rs.getString("USR_STATUS");
System.out.println("user status before activation: " + userStatus);
if (mailToken.equalsIgnoreCase(token) && userStatus.equalsIgnoreCase("PENDING")) {
userStatus = "ACTIVE";
System.out.println("user status after activation: " + userStatus);
}
}
} catch (Exception e) {
System.out.println("Error in selecting records");
e.printStackTrace();
}
try {
String query2 = "UPDATE TBL_USER SET USR_STATUS=? WHERE USR_PRIMARY_EMAIL=?";
con.prepareStatement(query2);
statement.setString(1, userStatus);
statement.setString(2, email);
int result = statement.executeUpdate();
if (result > 0) {
System.out.println("User activated successfully!");
}
} catch (Exception e) {
System.out.println("Error in updating records");
e.printStackTrace();
}
} catch (Exception e) {
System.out.println("Wrong query");
e.printStackTrace();
} finally {
try {
rs.close();
} catch (SQLException ex) {
Logger.getLogger(MailActivationDAO.class.getName()).log(Level.SEVERE, null, ex);
}
if (con != null) {
try {
con.close();
} catch (SQLException ex) {
Logger.getLogger(MailActivationDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
注意:我在更新记录捕获块时出错
您为 UPDATE 创建准备好的语句
con.prepareStatement(query2);
但不要将其分配给仍然包含 SELECT 语句的变量 statement
。
因此
statement = con.prepareStatement(query2);