Cómo corregir el error: no se puede encontrar el símbolo en la base de datos SQLite de Android Studio

Kate

Soy nuevo en Android Studio y estoy tratando de crear una base de datos SQLite. Cuando ejecuto el emulador, obtengo dos errores de "no se puede encontrar el símbolo".

Encontré preguntas similares, como estas: No se puede encontrar el error de símbolo en Android Studio

No se puede encontrar el error de símbolo en Android Studio

error: no se puede encontrar la clase de símbolo Android Studio

Pero ninguno ha ayudado.

Parece extraño porque las otras 3 columnas están bien.

Estaría muy agradecido si alguien pudiera ayudar.

Mi código MainActivity.java es:

package com.example.android.hbpm1;

import androidx.annotation.IdRes;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    DatabaseHelper myDb;
    EditText editsystolic,editdiastolic;
    Button btnsubmitButton;
    private Button button;



    int systolic, diastolic;

    EditText systolicInput;
    EditText diastolicInput;

    Button submitButton;





    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myDb = new DatabaseHelper(this);

        editsystolic = (EditText)findViewById(R.id.systolicInput);
        editdiastolic = (EditText)findViewById(R.id.diastolicInput);
        btnsubmitButton = (Button)findViewById(R.id.submitButton);
        AddData();




        button = (Button) findViewById(R.id.homeButton);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openHomeScreen();
            }
        });


        systolicInput = (EditText) findViewById(R.id.systolicInput);
        diastolicInput = (EditText) findViewById(R.id.diastolicInput);

        submitButton = (Button) findViewById(R.id.submitButton);
        submitButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                systolic = Integer.valueOf(systolicInput.getText().toString());
                diastolic = Integer.valueOf(diastolicInput.getText().toString());



                showToast(String.valueOf(systolicInput));
                showToast(String.valueOf(diastolicInput));

            }
        });



    }

    public void AddData() {
        btnsubmitButton.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        boolean isInserted = myDb.insertData(editsystolic.getText().toString(),
                                editdiastolic.getText().toString());
                        if(isInserted = true)
                            Toast.makeText(MainActivity.this,"Data Inserted",Toast.LENGTH_LONG).show();
                        else
                            Toast.makeText(MainActivity.this,"Data Not Inserted",Toast.LENGTH_LONG).show();


                    }
                }
        );
    }

    public void openHomeScreen() {
        Intent intent = new Intent(this, HomeScreen.class);
        startActivity(intent);
    }

    private void showToast(String text) {
        Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
    }
}

Mi código DatabaseHelper.java es:

package com.example.android.hbpm1;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

public class DatabaseHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME = "bpdata.db";
    public static final String TABLE_NAME = "bpdata_table";
    public static final String COL_1 = "_id";
    public static final String COL_2 = "datetime";
    public static final String COL_3 = "systolic";
    public static final String COL_4 = "diastolic";
    public static final String COL_5 = "hr";

    public DatabaseHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TABLE_NAME + " (_id INTEGER PRIMARY KEY AUTOINCREMENT,datetime INTEGER,systolic INTEGER,diastolic INTEGER,hr INTEGER)");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
        onCreate(db);

    }

    public boolean insertData(String datetime, String systolic) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_2,datetime);
        contentValues.put(COL_3,systolic);
        contentValues.put(COL_4,diastolic);
        contentValues.put(COL_5,hr);
        long result = db.insert(TABLE_NAME,null,contentValues);
        if(result == -1)
            return false;
        else
            return true;
    }
}

Estos son los errores:

        contentValues.put(COL_4,diastolic);
                                ^
  symbol:   variable diastolic
  location: class DatabaseHelper

error: cannot find symbol
        contentValues.put(COL_5,hr);
                                ^
  symbol:   variable hr
  location: class DatabaseHelper```




Inverce

Respuesta corta

En su método insertData ha declarado solo 2 parámetros dateTime y sysTolic, pero no diastolic y hr, esos campos / variables no se declaran en la clase.

Entonces tienes un error.

La solución más fácil a su problema que es compatible con el código que escribió es simplemente agregar esos 2 parámetros al método insertData.

sin embargo

En mi opinión personal, los tiempos en los que necesitábamos escribir código usando nada más que declaraciones SQL sin procesar deberían haber desaparecido hace mucho, hay una gran biblioteca (tanto para académicos como para empresas) hecha por Google dirigida específicamente a Android, se llama Room .

Por supuesto, si las especificaciones de su proyecto requieren que no use ninguna biblioteca, está bien, sin embargo, en Android, usamos bibliotecas para todas las pequeñas cosas solo para hacer nuestras vidas más fáciles, seguras y rápidas. (también conocido como RxKotlin, Room, Retrofit, Gson, Dagger, etc.)

Saludos y diviértete codificando

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

TOP Lista

CalienteEtiquetas

Archivo