es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo obtener datos de una base de datos utilizando Sqlite?

Cómo puedo solucionar este problema y por qué estas palabras se ponen en rojo. ¿Por qué “MoveToNext” se pone en rojo y “res” también se pone en color rojo?

public void viewAll() {
    ViewBtn.setOnClickListener(
        new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Cursor res = dbHelper.getAllData();
                if (res.getCount() == 0);
                    showMessage("Error","No Appointments");
                return;
            }

            StringBuffer buffer = new StringBuffer();
            while (res.moveToNext()) {
                buffer.append("CustomerID :" + res.getString(0) + "\n");
                buffer.append("Name :" + res.getString(1) + "\n");
                buffer.append("Date :" + res.getString(2) + "\n");
                buffer.append("Time :" + res.getString(3) + "\n");
                buffer.append("Gender :" + res.getString(3) + "\n");
                buffer.append("Service :" + res.getString(3) + "\n");
            }

            showMessage("Appointments",buffer.toString());
        }
    );
}

public void showMessage(String title,String Message){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(Message);
    builder.show();
}

Descripción de la imagen

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema radica en la ubicación del bucle while en el bloque de código. Debería colocarse dentro del método onClick porque el cursor “res” es una variable local de este método y no se puede acceder fuera de este método. Por lo tanto, “MoveToNext” y “res” obtienen el color rojo porque no se reconocen fuera del alcance del método onClick.

    Para solucionar el problema, mueva el bucle while dentro del método onClick de la siguiente manera:

    public void viewAll() {
        ViewBtn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Cursor res = dbHelper.getAllData();
                if (res.getCount() == 0){
                    showMessage("Error","No hay citas");
                    return;
                }
                StringBuffer buffer = new StringBuffer();
                while (res.moveToNext()) {
                    buffer.append("CustomerID :" + res.getString(0) + "\n");
                    buffer.append("Name :" + res.getString(1) + "\n");
                    buffer.append("Date :" + res.getString(2) + "\n");
                    buffer.append("Time :" + res.getString(3) + "\n");
                    buffer.append("Gender :" + res.getString(4) + "\n"); // índice corregido aquí
                    buffer.append("Service :" + res.getString(5) + "\n"); // índice corregido aquí
                }
                showMessage("Citas",buffer.toString());
            }
        });
    }
    
    public void showMessage(String title,String Message){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setCancelable(true);
        builder.setTitle(title);
        builder.setMessage(Message);
        builder.show();
    }
    

    De esta manera, la variable “res” está en alcance para todo el método, y los errores “MoveToNext” y “res” deberían desaparecer.

Comments are closed.