2017-12-10 6 views
1

muデータベース内の特定のテーブルから行を選択し、結果に基づいてテーブルを更新しようとしています。多くの研究の後では、updateString()とupdateRow()が行く方法だと思われます。ここに私のコードだ、stateStatementタイプのグローバル変数であることに注意してください。これを行うMySQL - ResultSet.updateString()java.sql.SQLException:列が見つかりません

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) 

しかし、「ユーザー名」はの1の正確な名前です。更新したい列...何が起こっているのですか?

答えて

1

これらの列を結果セットで使用できるようにするには、クエリ内でuserNamepwdの列を選択する必要があります。私はuserNamepwdを選択リストに追加することができますが、SELECT *と一緒に利用可能なすべての列を取得することができます。

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(); 
} 
+0

ありがとうございました!今は完璧に動作しています! – AlexT

0

select sqlにuserNameとpwdが見つかりませんでした。

それは次のようになります。

文字列のSQL = "SELECT IDP、firstNameという、ユーザ名、PWD、lastNameの、PERSONからの塩"。

関連する問題