У меня проблема при использовании AsyncTask, этот код работает нормально, но когда я возвращаю ResultSet, в mainActivity у меня нет результата AsyncTask и моего приложения. Я пытаюсь использовать таймер и Thread.sleep и не работаюAsyncTask and ResultSet on android
blast_dbConnect task = new blast_dbConnect("asd","123",MainActivity.this);
task.execute("Conectando",sql);
try {
if(rs.next()==true && rs!=null){
String passCheck;
passCheck = rs.getString("password");
Log.i("Se conecta",passCheck);
tv3.setText(passCheck);
/*catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
/*if(passCheck.equals(password)){
Log.i("Se conecta","Se conecta");
return rs;
}*/
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Это мой synctask код RS является ResultSet (я хочу, чтобы мой synctask возвратить набор. Моя synctask это
public class blast_dbConnect extends AsyncTask<String,String,ResultSet> {
String username;
String password;
Context c;
ProgressDialog pd;
private String ipServidorMySQL = "jdbc:mysql://db4free.net:3306/cuetospalace";
private String contrasenaMySQL="636251630";
private String usuarioMySQL = "sdelcueto";
public blast_dbConnect(String user,String pass,Context context){
username = user;
password = pass;
c = context;
}
@Override
protected void onPreExecute(){
pd = new ProgressDialog(c);
pd.setMessage("Conectando");
pd.setCancelable(false);
pd.show();
}
@Override
protected ResultSet doInBackground(String...params) {
boolean login = false;
String input = params[1];
//publishProgress(input);
try{
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Connection conn;
Class.forName("com.mysql.jdbc.Driver").newInstance();
//conn = DriverManager.getConnection("jdbc:mysql://db4free.net:3306/cuetospalace","sdelcueto","636251630");
conn = (Connection)DriverManager.getConnection(ipServidorMySQL, usuarioMySQL, contrasenaMySQL);
//Log.i("SQL",input);
Statement stmt = conn.createStatement();
//Log.i("Se conecta","Se conecta");
ResultSet rs = stmt.executeQuery(input);
/*if(rs.next()==true){
String passCheck = rs.getString("password");
return passCheck;
/*if(passCheck.equals(password)){
Log.i("Se conecta","Se conecta");
return rs;
}*/
//}
return rs;
}
catch(SQLException | InstantiationException | IllegalAccessException | ClassNotFoundException e){
//Log.i("bla",e.getMessage());
return null;
}
}
@Override
protected void onProgressUpdate(String...params){
//Log.i("onProgressUpdate","onProgressUpdate");
pd.setMessage(params[0]);
}
protected void onPostExecute(ResultSet rs){
//Log.i("onPostExecute","onPostExecute");
MainActivity.rs=rs;
if(pd != null)
pd.dismiss();
//pd.cancel();
}
protected void onCancelled(){
//Log.i("onCancelled","onCancelled");
cancel(true);
}
} Я хочу, чтобы он основной поток должен ожидать конца AsyncTask, я пытаюсь функция прибудете слишком Может кто-нибудь мне помочь?
Он выходит из строя, в случае (rs.next() == TRUE && RS! = null), этот код строки в моем основном потоке, является nullPointerException – sdelcueto
@sdelcueto, что такое rs? можете ли вы поместить свой полный код? – MHP
Я редактирую свой пост, вы можете видеть мой код там. Rs - resultSet, я хочу, чтобы моя synctask вернула результат – sdelcueto