2014-06-20 14 views
0

변수 AUX와 resultado가 같은 값을 반환하지 않는 이유를 모르겠습니다 ... 다른 클래스에 값을 반환하도록하고 싶습니다. 도와 줄수있으세요?동일한 값을 유지하려면 어떻게해야합니까?

내 클래스입니다 :

public class CriarConexao extends AsyncTask<String, Void, String> { 

    @Override 
    protected String doInBackground(String... urls) { 

     String response = ""; 
     try { 

      Class.forName("com.mysql.jdbc.Driver"); 
      System.out.println("driver conectado"); 
      Connection con = DriverManager.getConnection("jdbc:mysql://10.0.2.2:3306/savetime", "root", "root"); 
      resultado = "Database connection success\n"; 
      Statement st = con.createStatement(); 
      ResultSet rs = st.executeQuery("select * from ingresso"); 
      //ResultSetMetaData rsmd = rs.getMetaData(); 

      while(rs.next()) { 

       resultado = rs.getString(1); 
      } 

      AUX = resultado ; 
      System.out.println("Auxiliar 1: " + AUX + " e " + resultado); 
     } 
     catch(Exception e) { 
      e.printStackTrace(); 
      System.out.println("ERRO: " + e.toString()); 
     } 
    return response; 
    } 

    @Override 
    protected void onPostExecute(String resultado) { 
     AUX = resultado ; 
     System.out.println("Auxiliar 2: "+AUX + " e " + resultado); 
    } 
} 

로그 캣 :

06-20 05:00:47.475: I/System.out(1592): Auxiliar 1: 1234 e 1234 
06-20 05:00:47.475: I/System.out(1592): Auxiliar: e 
+0

System.out.println의 값은 무엇입니까? ("Auxiliar 2 : "+ AUX +"e "+ resultado); –

+0

06-20 05 : 00 : 47.475 : I/System.out (1592) : 보조 2 : e –

+0

코드와 일치하지 않는 출력을 제외하고, 어디서 proble인지는 분명하지 않습니다. AUX와 resultado는 "1234"와 ""한 번 동일한 값을 포함합니다. – laune

답변

1

입니다 response 변수 값을 반환하여 doInBackground 기능이 추가 blank.So 때문에 AUXresponse
방법이

@Override 
    protected String doInBackground(String... urls) { 

     String response = ""; 
     try { 

      Class.forName("com.mysql.jdbc.Driver"); 
      System.out.println("driver conectado"); 
      Connection con = DriverManager.getConnection("jdbc:mysql://10.0.2.2:3306/savetime", "root", "root"); 
      resultado = "Database connection success\n"; 
      Statement st = con.createStatement(); 
      ResultSet rs = st.executeQuery("select * from ingresso"); 
      //ResultSetMetaData rsmd = rs.getMetaData(); 

      while(rs.next()) { 

       resultado = rs.getString(1); 
      } 

      AUX = resultado ; 
      response = AUX; // Add here 
      System.out.println("Auxiliar 1: " + AUX + " e " + resultado); 
     } 
     catch(Exception e) { 
      e.printStackTrace(); 
      System.out.println("ERRO: " + e.toString()); 
     } 
    return response; 
} 
시도
+0

@ LucasYoshimura 도와 주시겠습니까, 코딩 즐기기. –

0

doInBackground 메서드에서 응답 문자열을 초기화하지만 AUX 또는 resultado를 할당하지 않으므로 postExecute resultado가 비어 있습니다 (같은 이름을 가진 것은 동일한 변수가 아니기 때문에). 둘 이상의 문자열을 반환하려고하므로 asynctask를 조정하여 반환하려는 두 값이 포함 된 배열이나지도를 반환해야합니다.