【问题标题】:MySQL - ResultSet.updateString() java.sql.SQLException: Column not foundMySQL - ResultSet.updateString() java.sql.SQLException: 找不到列
【发布时间】:2018-05-24 04:29:49
【问题描述】:

我正在尝试从 mu 数据库中的某个表中选择行并根据结果更新我的表。经过大量研究,似乎 updateString() 和 updateRow() 是要走的路。这是我的代码,请注意stateStatement 类型的全局变量:

public void updateMyRows(Connection conn){
    try {
        int id;
        String firstName, lastName, userName, pwd;
        state = conn.createStatement();
        String sql = "SELECT idP, firstName, lastName, salt FROM PERSON";
        ResultSet rs = state.executeQuery(sql);
        while (rs.next()){
            id = rs.getInt("idP");
            firstName = rs.getString("firstName");
            lastName = rs.getString("lastName");
            userName = UserNamePwd.userNameGen(lastName, firstName, id);
            pwd = UserNamePwd.passWordGen(lastName, firstName, id);
            rs.updateString("userName", userName);
            rs.updateString("pwd", pwd);
            rs.updateRow();
        }
        rs.close();
        state.close();
    } catch (Exception e){
        e.printStackTrace();
    }
}

这样做会给我这个错误:

java.sql.SQLException: Column 'userName' not found.
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
        at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1077)
        at com.mysql.jdbc.ResultSetImpl.updateString(ResultSetImpl.java:7788)
        at AddUsersToDB.addUserNamesAndHash(AddUsersToDB.java:79)
        at AddUsersToDB.main(AddUsersToDB.java:96)

然而,'userName' 是我要更新的列之一的确切名称......这是怎么回事?

【问题讨论】:

    标签: mysql sql jdbc resultset


    【解决方案1】:

    您需要在查询中选择userNamepwd 列,以便这些列在结果集中可用。我可能会在这里使用SELECT * 来获取所有可用的列,尽管您可以将userNamepwd 添加到选择列表中。

    String sql = "SELECT * FROM PERSON";
    ResultSet rs = state.executeQuery(sql);
    while (rs.next()) {
        id = rs.getInt("idP");
        firstName = rs.getString("firstName");
        lastName = rs.getString("lastName");
        userName = UserNamePwd.userNameGen(lastName, firstName, id);
        pwd = UserNamePwd.passWordGen(lastName, firstName, id);
        rs.updateString("userName", userName);
        rs.updateString("pwd", pwd);
        rs.updateRow();
    }
    

    【讨论】:

      【解决方案2】:

      您在选择的 sql 中遗漏了用户名和密码。

      应该是:

      String sql = "SELECT idP, firstName, userName, pwd, lastName, salt FROM PERSON";

      【讨论】:

        猜你喜欢
        • 2016-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-13
        • 2020-05-05
        • 2019-08-22
        相关资源
        最近更新 更多