버튼을 클릭하여 비밀번호를 변경하더라도 에뮬레이터를 실행할 때 오류가 발생하지 않습니다. 내가 생각할 수있는 모든 것을 시도 해봤는데 내가 뭔가 잘못하고 있는지 아는 사람이 있는지
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_account);
비밀번호 변경 버튼
Button password = (Button) findViewById(R.id.btnChangePassword);
password.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
update();
} catch (Exception e) {
e.printStackTrace();
}
}
});}
비밀번호 업데이트 방법
public Exception update()throws Exception{
Connection conn = null;
Statement st = null;
try {
conn = ConnectionManager.getConnection();
st = conn.createStatement();
String select_password = "SELECT * From Userinfo Where USERID = 5";
ResultSet Password = st.executeQuery(select_password);
String password = "UPDATE userinfo SET PASSWORD = ? WHERE USERID = 5";
while (Password.next()) {
PreparedStatement ps = null; //conn.prepareStatement(Update_Bank);
ps = conn.prepareStatement(password);
String pass = "password123";
ps.setString(1, pass);
ps.executeUpdate();
ps.close();
}
}catch(Exception e){
return e;
}
return null;
}}
좋아, 그래서 몇 가지를 변경하고 코드를 실행 한 결과 "ResultSet Password = st.executeQuery (select_password);"에서 실패하는 것으로 나타났습니다. 성명서. 문제는 일식에서는 작동하지만 안드로이드 스튜디오에서는 작동하지 않는다는 것입니다. 왜 그럴까요?
Connection conn = null;
Statement st = null;
conn = ConnectionManager.getConnection();
st = conn.createStatement();
String select_password = "SELECT * From Userinfo Where USERID = 5";
ResultSet Password = st.executeQuery(select_password);
String password =( "UPDATE userinfo SET PASSWORD = ? WHERE USERID = 5");
while (Password.next()) {
PreparedStatement ps = conn.prepareStatement(password);
ps = conn.prepareStatement(password);
String pass = "password";
ps.setString(1, pass);
ps.executeUpdate();
ps.close();
}
}
update의 반환 값을 무시하여 완전히 무시하는 update 내부에 catch all 문이 있기 때문에 예외가 발생하지 않습니다!
수정 후 다음을 수행하십시오.
while 루프 내부의 코드가 실행되고 있는지 확인하십시오.
executeUpdate의 반환 값이 0보다 큰지 확인하십시오.
암호 변경을위한이 SQL 구문에 익숙하지 않은 상태에서 콘솔에서 직접 실행 해 보셨습니까?
그리고 몇 가지 조언 :
결과 집합을 사용하지 않으므로 쿼리가 필요하지 않습니다.
ID를 사용하지 마십시오. 대신 사용자 이름을 사용하십시오.
연결 종료
모든 예외를 포착하지 마십시오. 그렇게한다면 예외가 발생할 때 절대 무시하지 마십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다