hwi
78
2019-04-25 03:01:19
3
177

안녕하세요. 안드로이드 질문입니다.


현재 안드로이드 어플을 하나 만들고 있는데


DB에서 아이디와 비밀번호 정보를 빼와서 로그인을 하려고 합니다.


이클립스의 자바파일에서 아이디와 비밀번호를 비교한 값을 


안드로이드 자바파일로 넘겨서 아이디와 비밀번호가 맞으면 로그인이 되게끔 하고싶은데


값은 가져와 지는데 적용이 안되는 문제가 있습니다.


코드는 아래와 같습니다.



안드로이드 JAVA 코드

    btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String loginId = eid.getText().toString();
String loginPw = epw.getText().toString();
//EditText id = (EditText) findViewById(R.id.eid);
//EditText pw = (EditText) findViewById(R.id.epw);

//Toast.makeText(LoginActivity.this,"로그인",Toast.LENGTH_SHORT).show();

try {
/*
String result;
LoginerActivity task = new LoginerActivity();
task.execute(loginId, loginPw, "login");
result = task.execute(loginId, loginPw, "login").get();
*/
String result = new LoginerActivity().execute(loginId, loginPw, "login").get();
Log.i("리턴 값",result);

if(result.equals("true")) {
Toast.makeText(LoginActivity.this,"로그인",Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext(), MenuActivity.class);
startActivity(intent);
finish();
} else if(result.equals("false")) {
Toast.makeText(LoginActivity.this,"아이디 또는 비밀번호가 틀렸습니다.",Toast.LENGTH_SHORT).show();
eid.setText("");
epw.setText("");
} else if(result.equals("noId")) {
Toast.makeText(LoginActivity.this,"존재하지 않는 아이디",Toast.LENGTH_SHORT).show();
eid.setText("");
epw.setText("");
}
}
catch (Exception e) {
Log.i("DBtest", e.getMessage());
Log.i("DBtest", e.toString());
e.printStackTrace();

}
}
});

}


이클립스 JAVA 코드

 public String loginDb(String id, String pw) {

		try {

			Class.forName("oracle.jdbc.driver.OracleDriver");

			conn = DriverManager.getConnection(jdbcUrl, userId, userPw);

			

			sql = "SELECT id,password FROM JSP_MEMBER WHERE id = ? and password = ?";

			pstmt = conn.prepareStatement(sql);

			pstmt.setString(1, id);

			pstmt.setString(2, pw);

			

			rs = pstmt.executeQuery();

			if (rs.next()) {

				if (rs.getString("id").equals(id) && rs.getString("password").equals(pw)) {

					returns2 = "true";// 로그인 가능

				} else {

					returns2 = "false"; // 로그인 실패

				}

			} else {

				returns2 = "noId"; // 아이디 또는 비밀번호 존재 X

			}



		} catch (Exception e) {



		} finally {if (rs != null)try {rs.close();} catch (SQLException ex) {}

			if (pstmt != null)try {pstmt.close();} catch (SQLException ex) {}

			if (conn != null)try {conn.close();} catch (SQLException ex) {}

		}

		return returns2;

	}


안드로이드 에뮬을 실행시켜서 DB에 있는 아이디와 비밀번호를 입력하면

I/리턴 값:     >true 
이렇게 정상적으로 로그가 찍히는데

로그가 찍힌 후에 result를 조건문으로 비교해서 intent로 다음 화면으로 넘어가는게 맞는 것 같은데

로그만 찍히고 아무런 이벤트가 나오지 않네요..

조건문을 잘못쓴건지 아니면 다른 부분에서 문제가 있는지..궁금합니다.






0
0
  • 답변 3

  • CyanGlint
    323
    2019-04-25 08:44:35

    제일 쉬운 방법은... 브레이크포인트 걸고 디버그 돌려보면 확실하지 않을까요

    0
  • AI...
    955
    2019-04-25 09:45:54
    Exception e 에 로그 찍어보세요
    0
  • 개꿀
    1k
    2019-04-25 12:49:27

    MenuActivity 액티비티 매니패스트에 추가 하셨나요?

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.