마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

db데이터 update질문입니다!!

0 추천

좋아요 버튼처럼 플래그버튼을 만들려고 하는데요!!

onClick에서 플래그가 1이면 AsyncTask를 execute해서 

http://192.168.0.6:8888/android/guest/like_down.jsp 여기로 접속해서 flag를 0으로 만들고

flag가 0이면 http://192.168.0.6:8888/android/guest/like_up.jsp 여기로 접속해서 1로만들어줄려고 하는데 

UI는 바뀌는데 데이터가 UPDATE되지 않습니다!! 웹으로 직접 접속을하면 UPDATE가 되긴되는데 

안드로이드에서하면 왜 안될까요 ㅠㅠ

onclick 메소드랑 jsp소스올려드리겠습니다. 

 public void onClick(View view) {
        switch (view.getId()) {
            case R.id.select_like: {
                if (mAppData.getLikeFlag() == 0) {
                    likeBtn.setImageResource(R.drawable.thumb_up_select);
                    mAppData.setLikeFlag(1);
                    try{
                        new FlagSetTask().execute("like_up.jsp");
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                } else if(mAppData.getLikeFlag() == 1) {
                    likeBtn.setImageResource(R.drawable.thumb_up_defult);
                    mAppData.setLikeFlag(0);
                    try{
                        new FlagSetTask().execute("like_down.jsp");
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
                break;
            }

like_up.jsp 파일 코드입니다!!

<?xml version="1.0" encoding="UTF-8"?>

<%@ page contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="sample_dbConn.jsp" %>
<%@ page import="java.sql.PreparedStatement"%>

 <%
    request.setCharacterEncoding("euc-kr");
    String id = request.getParameter("id");
    sql = "update like_table set like_flag1 = 1 where id = 'taek'";

    //rs = stmt.executeQuery(sql);    
    stmt = con.createStatement();
    stmt.executeUpdate(sql);

    stmt.close();
    con.close();
 %>

익명사용자 님이 2016년 9월 27일 질문
방금 디버깅을 해보니깐 테스크 자체가 실행이 안되는거같은데 쓰레드 문제인것같습니다ㅜㅜ 어떻게 고쳐야할까요?? 참고로 저기 onClick메소드는 fragment안에 있는 메소드입니다!!
onClick 이벤트는 정상적으로 호출이 되나요? 그렇다면 FlagSetTask의 내부코드를 보여주셔야 할 것 같아요.
public class FlagSetTask extends AsyncTask<String, String, Void> {
    @Override
    protected Void doInBackground(String... strings) {
        try {
            HttpURLConnection conn = (HttpURLConnection)(new URL("http://192.168.0.6:8888/android/guest/" + strings[0]).openConnection());
            conn.connect();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
이게 테스크 소스입니다 ㅜㅜ

저기 주소의 jsp 파일 입니다..

<?xml version="1.0" encoding="UTF-8"?>

<%@ page contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="sample_dbConn.jsp" %>
<%@ page import="java.sql.PreparedStatement"%>

 <%
    request.setCharacterEncoding("euc-kr");
    sql = "update like_table set like_flag1 = 0 where id = 'taek'";

    //rs = stmt.executeQuery(sql);
    stmt = con.createStatement();
    stmt.executeUpdate(sql);

    stmt.close();
    con.close();
 %>

혹시 jsp 파일리 잘못됐나요 ㅠㅠ

1개의 답변

0 추천
AsyncTask 실행할때 execute 말고 executeOnExecutor 함수를 써보세요.
Development Guy (70,570 포인트) 님이 2016년 9월 30일 답변
...