본문 바로가기
Study/Android

ANDROID - MYSQL 통신하기

by Answer Choi 2016. 7. 15.
반응형

안드로이드 소스코드


PHP 소스코드



이 전에 포스팅을 했었지만, 직접 실행해 볼 수 있도록 외부 클라우드 서버로 연결했습니다.


이 전 포스팅 보기~


우선 개념은 앞서 포스팅한 내용과 같습니다.



안드로이드에서 직접적으로 MySQL(Database)에 접속을 할 수 없습니다.


그렇기 때문에 중간에 PHP를 거쳐야 하는데, 이 PHP는 DB서버에 있든 또 다른 서버 PC에 있든 


상관은 없습니다.


우선 안드로이드에서 PHP가 있는 서버쪽으로 접속을 해서 PHP파일을 실행합니다.


물론 네트워크를 사용하는 것이기 때문에 스레드를 사용하여야 합니다.


ANDROID CODE


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class loginMysql extends Thread {
 
    public static boolean active=false;
 
    Handler mHandler;
    String userId=null,userPw=null,url=null;
    String login_url="http://answerofgod.honor.es/study/android/login/sql/chkid.php?id=";
 
    public loginMysql(String id,String pw){
        mHandler=new Handler();
        userId=id;
        userPw=pw;
        url=login_url+userId;
 
    }
....중략....
 
}
cs


로그인 버튼을 눌렀을 때 들어오는 코드인데, Line 7이 php파일이 있는 위치입니다.


그리고 아이디와 패스워드 정보를 가져와 변수로 넣어줍니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@Override
public void run() {
    super.run();
    if(active){
        StringBuilder jsonHtml = new StringBuilder();
        try {
            URL phpUrl = new URL(url);
 
            HttpURLConnection conn = (HttpURLConnection)phpUrl.openConnection();
 
            if ( conn != null ) {
                conn.setConnectTimeout(10000);
                conn.setUseCaches(false);
 
                if ( conn.getResponseCode() == HttpURLConnection.HTTP_OK ) {
                    BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
                    while ( true ) {
                        String line = br.readLine();
                        if ( line == null )
                            break;
                        jsonHtml.append(line + "\n");
                    }
                    br.close();
                }
                conn.disconnect();
            }
        } catch ( Exception e ) {
            e.printStackTrace();
        }
        show(jsonHtml.toString());
    }
}
cs


이 코드는 http로 윗부분의 url을 보내는 코드입니다.


Line 15~23 : url이 PHP파일이고, 이 PHP파일은 DB에 연결해 데이터를 쿼리하는 부분이기 때문에 


쿼리해 온 데이터를 json으로 가져옵니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void show(final String result){
   mHandler.post(new Runnable(){
 
       @Override
       public void run() {
 
           try {
 
               JSONObject jObject = new JSONObject(result);
 
               String getpw =jObject.get("PW").toString();
               String getname=jObject.get("Name").toString();
 
               Login.result_login(getpw, userPw, getname);
           } catch (JSONException e) {
               e.printStackTrace();
               Login.result_login("false""false""false");
           }
        }
   });
}
cs


이 부분은 json으로 가져온 데이터를 파싱해서 변수로 전달해 주는 부분입니다.


그리하여 최종적으로 로그인하려는 ID와 PW가 일치하는지 확인한 후 로그인을 하게 됩니다.


PHP CODE


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
    $host='mysql.2freehosting.com';
    $uname='u834678310_root';
    $pwd='123456';
    $db="u834678310_test";
 
    $con = mysql_connect($host,$uname,$pwd) or die("connection failed");
    mysql_select_db($db,$con) or die("db selection failed");
     
    $id=$_GET['id'];
    
    
    $r=mysql_query("select PW,Name from User_Info where ID='$id'",$con);
 
    $row=mysql_fetch_array($r);
     
    print(json_encode($row));
    mysql_close($con);
?>
cs



이건 PHP 코드입니다.


Line 2~5 : DB에 접속하기 위한 정보들입니다.


Line 7~8 : Mysql 접속후 DB를 선택합니다.


Line 13~15 : Query를 한 후 변수에 저장합니다.


Line 17 : json형식으로 내보냅니다. 이부분이 android 코드에서 데이터를 저장하는 부분입니다.



실제 사용한 데이터 베이스 구조입니다.


그리고 실제 저장된 데이터 입니다.




앱 실행 장면입니다.



위 DB에 이미 저장되어있는 ID와 PW를 입력하면 login이 됩니다.



로그인이 완료되었습니다.


아직은 아무것도 없습니다^^


새로운 아이디로 로그인을 하고 싶다면 첫화면에서 register를 클릭합니다.



정보를 입력하시고 회원가입을 하면 가입한 아이디로 로그인이 가능합니다^^



추가(2017.03.17)


안드로이드용 소스코드와 PHP용 소스코드가 새롭게 업데이트 되었습니다.


제일 위 링크를 통해 다운로드 하세요^^

반응형

인기글