Resultset.next () показывает частичные результаты - не относится к пропуску первой строки - PullRequest
0 голосов
/ 28 декабря 2018

Я создаю приложение для Android, которое использует данные SQL.Все строки извлекаются (10 строк), когда я запускаю (CODE1) в основной деятельности.Только первые 4 строки отображаются, когда я помещаю код в класс AsyncTask как часть метода onPOstExecute (CODE2).Исключение показывает пустую строку после 4-й строки.

CODE1

if (con == null) {
        zES = "Error in connection with SQL server";
    } else {

        String queryFE = "SELECT * FROM executed_steps where Batch_No ='" + rBatch_No + "'";

        try {

            PreparedStatement ps = con.prepareStatement(queryFE);
            result_rs_ES = ps.executeQuery();

        } catch (Exception ex) {
            result_rs_ES = null;
        }
    }

    if (result_rs_ES == null) {
        Toast.makeText(getApplication(), "No Batch Found"+zES, Toast.LENGTH_SHORT).show();
    } else {

        try {
            while (result_rs_ES.next()) {

                rStep_Id = result_rs_ES.getString("Step_Id");
            }
        } catch (Exception e) {

}

CODE2 Это AsyncTask

private class FindExecutedStepsAsyncTask extends AsyncTask<String,Void,ResultSet > {

    String result_ES,zES;
    ResultSet result_rs_ES;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected ResultSet doInBackground(String... params) {


        zES=params[0];
        Connection con = connectionClass.CONN();

        if (con == null) {
            zES = "Error in connection with SQL server";
        } else {

            String queryFE = "SELECT * FROM executed_steps where Batch_No ='"+zES+"'";

            try {

                PreparedStatement ps = con.prepareStatement(queryFE);
                result_rs_ES = ps.executeQuery();

            } catch (Exception ex) {
                result_rs_ES=null;
            }
        }
        return result_rs_ES;
    }

    @Override
    protected void onPostExecute(ResultSet mresult_rs_ES) {
        passdatasteps(mresult_rs_ES);
    }
}

private void passdatasteps(ResultSet mresult_rs_ES) {

    if (mresult_rs_ES == null) {
        Toast.makeText(getApplication(), "No Batch Found", Toast.LENGTH_LONG).show();
    } else {

        try {
            while (mresult_rs_ES.next()) {


                rStep_Id = mresult_rs_ES.getString("Step_Id")
            }
        }
        catch (Exception e) {
        }
}
...