¿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();
}
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:
De esta manera, la variable “res” está en alcance para todo el método, y los errores “MoveToNext” y “res” deberían desaparecer.