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```
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.
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
Déjame decir algunas palabras