Java를 사용하여 Oracle 데이터베이스에서 내 비밀번호를 업데이트하려고합니다. 내가 뭘 잘못하고 있니?

스택

버튼을 클릭하여 비밀번호를 변경하더라도 에뮬레이터를 실행할 때 오류가 발생하지 않습니다. 내가 생각할 수있는 모든 것을 시도 해봤는데 내가 뭔가 잘못하고 있는지 아는 사람이 있는지

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

}
퀴즈 123

update의 반환 값을 무시하여 완전히 무시하는 update 내부에 catch all 문이 있기 때문에 예외가 발생하지 않습니다!

수정 후 다음을 수행하십시오.

  • while 루프 내부의 코드가 실행되고 있는지 확인하십시오.

  • executeUpdate의 반환 값이 0보다 큰지 확인하십시오.

  • 암호 변경을위한이 SQL 구문에 익숙하지 않은 상태에서 콘솔에서 직접 실행 해 보셨습니까?

그리고 몇 가지 조언 :

  • 결과 집합을 사용하지 않으므로 쿼리가 필요하지 않습니다.

  • ID를 사용하지 마십시오. 대신 사용자 이름을 사용하십시오.

  • 연결 종료

  • 모든 예외를 포착하지 마십시오. 그렇게한다면 예외가 발생할 때 절대 무시하지 마십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관