Hallo,
ja ich habe eine größeren Fehler und deshalb suche ich gerdae
Der Fehler;
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fitness.christian.fitness/com.fitness.christian.fitness.atcitivities.ListViewActivity}: android.database.sqlite.SQLiteException: near "EXIST": syntax error (code 1): , while compiling: DROP TABLE IF EXIST ueb
Hier der Code;
public class DatabaseHelper extends SQLiteOpenHelper {
private static DatabaseHelper sInstance;
public final ArrayList<Uebung> uebList = new ArrayList<>();
public final ArrayList<Tag> tagList = new ArrayList<>();
private static final int DATABASE_VERSION = 2;
private static final String DATABASE_NAME= "fitnessHelper";
//Tabelle Übungen "ueb"
private static final String TABLE_UEB = "ueb",
UEB_ID = "idU",
UEB_TITEL = "titel",
UEB_BESCHREIBUNG = "beschreibung",
UEB_URL_MAIN = "urlMain",
UEB_URL_SEC = "urlSec",
UEB_URL_DETAIL = "urlDetail";
//Tabelle Übungen + Tag "ueb_tag"
private static final String TABLE_UEB_TAG = "ueb_tag",
UEB_TAG_IDU = "idU_ueb",
UEB_TAG_IDT = "idT_tag";
//Tabelle Tag "tag"
private static final String TABLE_TAG = "tag",
TAG_ID = "idT",
TAG_TITEL = "titel";
//Tabelle Übungen + Plan "ueb_plan"
private static final String TABLE_UEB_PLAN = "ueb_plan",
UEB_PLAN_IDU = "idU_ueb",
UEB_PLAN_IDP = "idP_plan",
UEB_PLAN_SATZ = "satz",
UEB_PLAN_WDH = "wdh",
UEB_PLAN_KG = "kg";
//Tabelle Plan "plan"
private static final String TABLE_PLAN = "plan",
PLAN_ID = "idP",
PLAN_TITEL = "titel";
public DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public static synchronized DatabaseHelper getInstance(Context context){
if (sInstance == null) {
sInstance = new DatabaseHelper(context);
}
return sInstance;
}
@Override
public void onCreate(SQLiteDatabase db) {
//Datenbank für ForeinKey freigeben
Log.d("Datenbankzugriff: ", "jetzt");
db.execSQL("PRAGMA foreign_keys = ON;");
db.execSQL("CREATE TABLE "+TABLE_UEB+"("+ UEB_ID +" INTEGER PRIMARY KEY AUTOINCREMENT,"+ UEB_TITEL +" TEXT,"+ UEB_BESCHREIBUNG +" TEXT,"+ UEB_URL_MAIN +" TEXT,"+ UEB_URL_SEC +
" TEXT,"+ UEB_URL_DETAIL +" TEXT)");
db.execSQL("CREATE TABLE "+TABLE_TAG+"("+ TAG_ID +" INTEGER PRIMARY KEY AUTOINCREMENT,"+ TAG_TITEL +" TEXT)");
db.execSQL("CREATE TABLE "+TABLE_PLAN+"("+ PLAN_ID +" INTEGER PRIMARY KEY AUTOINCREMENT,"+ PLAN_TITEL +" TEXT)");
db.execSQL("CREATE TABLE "+TABLE_UEB_TAG+"("+ UEB_TAG_IDU +" INTEGER, "+ UEB_TAG_IDT +" INTEGER, FOREIGN KEY("+UEB_TAG_IDU+") REFERENCES "+TABLE_UEB+"("+UEB_ID+") ON DELETE CASCADE,"+
"FOREIGN KEY("+UEB_TAG_IDT+") REFERENCES "+TABLE_TAG+"("+TAG_ID+")"+" ON DELETE CASCADE");
db.execSQL("CREATE TABLE "+TABLE_UEB_PLAN+"("+ UEB_PLAN_IDU +" INTEGER,"+ UEB_PLAN_IDP +" INTEGER,"+ UEB_PLAN_SATZ +" INTEGER,"+ UEB_PLAN_WDH +" INTEGER,"+ UEB_PLAN_KG +" INTEGER,"
+" FOREIGN KEY("+UEB_PLAN_IDU+") REFERENCES "+TABLE_UEB+"("+UEB_ID+") ON DELETE CASCADE, FOREIGN KEY("+UEB_PLAN_IDP+") REFERENCES "+TABLE_PLAN+"("+PLAN_ID+") ON DELETE CASCADE");
createTags();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXIST "+TABLE_UEB);
db.execSQL("DROP TABLE IF EXIST "+TABLE_TAG);
db.execSQL("DROP TABLE IF EXIST "+TABLE_UEB_TAG);
db.execSQL("DROP TABLE IF EXIST "+TABLE_PLAN);
db.execSQL("DROP TABLE IF EXIST "+TABLE_UEB_PLAN);
onCreate(db);
}
Im Fehler gibt er immer diese Zeile an:
db.execSQL("DROP TABLE IF EXIST "+TABLE_UEB);
Ich habe die Versionsnummer geändert damit er eine Neue Tabelle anlegt.
Der Grund dafür war die Zugehörigkeit von Tags und Übungen.
Der Fehler passier wenn ich eine Aktivität aufrufe die auf die Datenbank zugreifen will.
Grüße
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.