2017-12-10 15 views
1

mu 데이터베이스에서 내 특정 테이블에서 행을 선택하고 결과를 기반으로 내 테이블을 업데이트하려고합니다. 많은 연구가 끝나면 updateString() 및 updateRow()가 최선의 방법이라고 생각됩니다.MySQL - ResultSet.updateString() java.sql.SQLException : 열을 찾지 못했습니다

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) 

그러나 '사용자 이름'중 하나의 정확한 이름 :이 날이 오류를 제공하고

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

: 여기에 내 코드입니다, 그 stateStatement 타입의 전역 변수입니다 유의하시기 바랍니다 업데이트하고 싶은 열 ... 무슨 일이야?

답변

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, 이름, 사용자 이름, 비밀번호가,이 lastName, 사람으로부터 소금";