#java #android #eclipse #variables
#java #Android #eclipse #переменные
Вопрос:
Я не понимаю, почему переменные 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 successn";
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);
}
}
logcat:
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
Комментарии:
1. Каково значение System.out.println(«Вспомогательный 2: » AUX » e » resultado);
2. 06-20 05:00:47.475: I/System.out(1592): Вспомогательный 2: e
3. Помимо вывода, не соответствующего коду, неясно, в чем проблема. AUX и resultado содержат одинаковые значения, один раз «1234» и один раз «».
4. но я хочу, чтобы AUX и resultado сохраняли их значения 1234
5. Добавьте этот код: response= AUX; после этого: AUX = resultado ;
Ответ №1:
Потому что ваша doInBackground
функция возвращает response
значение переменной, которое является пустым.Итак, добавьте AUX
к response
попробуйте это
@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 successn";
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;
}
Комментарии:
1. @LucasYoshimura Рад помочь, наслаждайтесь кодированием.
Ответ №2:
В вашем методе doInBackground вы инициализируете строку ответа, но вы никогда не присваиваете ей ни AUX, ни resultado, поэтому в postExecute resultado пуст (только потому, что он имеет то же имя, это не делает его той же переменной). Поскольку вы пытаетесь вернуть более одной строки, вам необходимо настроить asynctask так, чтобы он возвращал либо массив, либо карту, содержащую два значения, которые вы хотите вернуть