virtuelle Methode 'Leere android.database.sqlite.SQLiteDatabase.execSQL (java.lang.String)' aufzurufen:Android: Ich erhalte diese Fehlerversuch auf ein Null-Objekt Referenz
Unable to start activity ComponentInfo{amsi.dei.estg.ipleiria.pt.ima/amsi.dei.estg.ipleiria.pt.ima.ListaEmpresas}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.database.sqlite.SQLiteDatabase.execSQL(java.lang.String)' on a null object reference" on this line in my DBHelper:
Der Fehler in dieser Zeile ist:
database.execSQL(createEmpresasTable);
Mein DBHelper:
public class ImaBDHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "IMA";
private static final int DB_VERSION = 1;
private static final String EMPRESAS_TABLE_NAME = "empresas";
private static final String NOME_EMPRESA = "nome";
private static final String DESCRICAO_EMPRESA = "descricao";
private static final String LOCALIDADE_EMPRESA = "localidade";
private static final String AREA_EMPRESA = "area";
private final SQLiteDatabase database;
public ImaBDHelper(Context context)
{
super(context, DB_NAME, null, DB_VERSION);
this.database = getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
String createEmpresasTable = "CREATE TABLE " + EMPRESAS_TABLE_NAME +
"(id INTENGER PRIMARY KEY AUTOINCREMENT," +
NOME_EMPRESA + " TEXT NOT NULL," +
DESCRICAO_EMPRESA + " TEXT," +
LOCALIDADE_EMPRESA + " TEXT NOT NULL," +
AREA_EMPRESA + " TEXT NOT NULL," + ")";
database.execSQL(createEmpresasTable);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "DROP TABLE IF EXISTS " + EMPRESAS_TABLE_NAME;
database.execSQL(sql);
this.onCreate(database);
}
Die rest sind nur Methoden zum Erstellen, Lesen, Aktualisieren und Löschen.
Es tut uns leid, wenn dies ein Duplikat ist, aber ich habe nicht die Antwort für dieses genaue Problem in meinen Suchen gefunden. Vielen Dank im Voraus!
Verwenden Sie das 'db' Objekt aus der Signatur von' onCreate (SQLiteDatabase db) ', nicht die eine' Datenbank', die Sie als Feld definiert haben. Dasselbe gilt für die Implementierung der onUpgrade() Methode ... –
Danke !! Ich weiß nicht, wie ich es nicht bemerkt habe –