1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. DoctorBlack, 30.05.2018 #1
    DoctorBlack

    DoctorBlack Threadstarter Neuer Benutzer

    Hallo,

    für ein Schulprojekt brauche ich eine Datenbank mit 2 Tabellen, nach ewigen Versuchen mit SQLite und Room und anderen etlichen Möglichkeiten, bekomme Ich die Datenbank immer noch nicht zum laufen. Es wird immer nur eine der beiden nötigen Tabellen erstellt und bis jetzt konnte mir keiner auf StackOverflow helfen. Vielleicht kann mir hier einer Hilfe leisten.

    Ich hab mich jetzt darauf festgelegt die Datenbank mit SQLite zu erstellen.

    Hoffentlich kann mir einer von euch helfen.

    Danke schon mal im Voraus!
     
  2. lordzwieback, 30.05.2018 #2
    lordzwieback

    lordzwieback Moderator Team-Mitglied

    Hi Doc ;)

    Erstellst du deine SQLite DB aus einer DB-Helper-Klasse heraus? Falls ja, zeig uns mal deinen Code. Hellsehen kann hier leider noch niemand. :)

    Erhälst du im logcat Errormeldungen? Poste die ggf. auch mal.
     
    Zuletzt bearbeitet: 30.05.2018
  3. DoctorBlack, 30.05.2018 #3
    DoctorBlack

    DoctorBlack Threadstarter Neuer Benutzer

    Hier ist die DatabaseHelper Klasse, das Problem ist, dass leider immer nur eine der beiden Tabellen erstellt wird.

    Code:
    public class DatabaseHelper extends SQLiteOpenHelper {
    
    public static final String DATABASE_NAME = "Stundenplan.db";
    public static final String TABLE_NAME = "Fach_table";
    public static final String FACH_ID = "ID";
    public static final String FACH_NAME = "FACHNAME";
    public static final String FACH_KUERZEL = "FACHKUERZEL";
    public static final String FACH_RAUM = "FACHRAUM";
    public static final String FACH_LEHRER = "FACHLEHRER";
    public static final String FACH_FARBE = "FACHFARBE";
    public static final String TABLE_LEHRER = "Lehrer_table";
    public static final String LEHRERID = "ID_L";
    public static final String LEHRERNAME = "LEHRERNAME";
    public static final String LEHRERKUERZEL = "LEHRERKUERZEL";
    public static final String LEHRERRAUM = "LEHRERRAUM";
    public static final String LEHRERMAIL = "LEHRERMAIL";
    private static final String create_Table2 = "create table " + TABLE_LEHRER + "("+ LEHRERID +"INTEGER PRIMARY KEY AUTOINCREMENT," + LEHRERNAME +"TEXT," + LEHRERKUERZEL + "TEXT,"+ LEHRERRAUM + "TEXT," + LEHRERMAIL + "TEXT)";
    
    private static final String create_Table = "create table " + TABLE_NAME + "("+ FACH_ID + "INTEGER PRIMARY KEY AUTOINCREMENT," + FACH_NAME +"TEXT," + FACH_KUERZEL + " TEXT,"+ FACH_RAUM + "TEXT," + FACH_LEHRER + " TEXT)";
    
    public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
    Log.d("MeineAPP", "DB angelegt");
    }
    
    @override
    public void onCreate(SQLiteDatabase db) {
    Log.d("MeineAPP", "Tabelle angelegt");
    // db.execSQL("create table " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, FACHNAME TEXT, FACHKUERZEL TEXT, FACHRAUM TEXT, FACHLEHRER TEXT)");
    db.execSQL(create_Table);
    db.execSQL(create_Table2);
    }
    
    @override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    db.execSQL( "DROP TABLE IF EXISTS " + TABLE_LEHRER);
    onCreate(db);
    Log.d("MeineAPP", "in upgrade");
    }
    
    public boolean speichereFach(String fachName, String fachKuerzel, String fachRaum, String fachLehrer){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(FACH_NAME, fachName);
    contentValues.put(FACH_KUERZEL, fachKuerzel);
    contentValues.put(FACH_RAUM, fachRaum);
    contentValues.put(FACH_LEHRER, fachLehrer);
    long result = db.insert(TABLE_NAME, null, contentValues);
    if (result == -1){
    return false;
    }
    else {
    return true;
    }
    }
    
    public Cursor zeigeFaecher(){
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor res = db.rawQuery("select * from "+TABLE_NAME,null);
    return res;
    }
    
    public boolean speicherLehrer(String lehrerName, String lehrerKuerzel, String lehrerRaum, String lehrerMail){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(LEHRERNAME, lehrerName);
    contentValues.put(LEHRERKUERZEL, lehrerKuerzel);
    contentValues.put(LEHRERRAUM, lehrerRaum);
    contentValues.put(LEHRERMAIL, lehrerMail);
    long result = db.insert(TABLE_LEHRER, null, contentValues);
    if (result == -1){
    return false;
    }
    else {
    return true;
    }
    }
    
    public Cursor zeigeLehrer(){
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor res = db.rawQuery("select * from "+ TABLE_LEHRER,null);
    return res;
    }
    }
    
     
    Zuletzt von einem Moderator bearbeitet: 30.05.2018
  4. lordzwieback, 30.05.2018 #4
    lordzwieback

    lordzwieback Moderator Team-Mitglied

    Kann es sein, dass du in deinen Table-queries nur die Semikolons vergessen hast?

    Habe gerade in meinem SQLite Browser ne TestDB angelegt und folgenden Query abgeschickt:
    Code:
    create table "TABLE_1" ("id1" integer primary key autoincrement, "testfeld1" text);
    create table "TABLE_2" ("id2" integer primary key autoincrement, "testfeld2" text);
    
    Tabellen wurden in einem Rutsch ohne Meckern erstellt.
     
  5. DoctorBlack, 30.05.2018 #5
    DoctorBlack

    DoctorBlack Threadstarter Neuer Benutzer

    Semikolons fehlen keine.

    Hier ist mal noch die GitHub Repository falls das hilft: JDR3/Stundenplan
     
    Zuletzt bearbeitet: 30.05.2018
  6. jogimuc, 30.05.2018 #6
    jogimuc

    jogimuc Junior Mitglied

    Hallo
    schau dir mal deinen String für die Tabelle genauer an.
    du hast gar kein Freizeichen zwichen dem Namen und dem Type
    + LEHRERNAME +"TEXT," ergiebt "LEHRERNAMETEXT," somit wird kein Typ gefunden.

    versuche es mal so.

    private static final String create_Table2 = "create table " + TABLE_LEHRER + "("+ LEHRERID +" INTEGER PRIMARY KEY AUTOINCREMENT," + LEHRERNAME +" TEXT," + LEHRERKUERZEL + " TEXT,"+ LEHRERRAUM + " TEXT," + LEHRERMAIL + " TEXT)";

    private static final String create_Table = "create table " + TABLE_NAME + "("+ FACH_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + FACH_NAME +" TEXT," + FACH_KUERZEL + " TEXT,"+ FACH_RAUM + " TEXT," + FACH_LEHRER + " TEXT)";
     
    DoctorBlack bedankt sich.
  7. lordzwieback, 30.05.2018 #7
    lordzwieback

    lordzwieback Moderator Team-Mitglied

    Das war auch zuerst mein Gedanke mit den Leerzeichen, aber hab das getestet in meinem SQLite Browser und es hat komischerweise funktioniert. Evtl hat aber auch einfach der Browser das gecheckt und intern beim ausführen korrigiert..
     
  8. DoctorBlack, 30.05.2018 #8
    DoctorBlack

    DoctorBlack Threadstarter Neuer Benutzer

    Es lag tatsächlich am Leerzeichen, ich bin euch echt dankbar! Ihr habt mir den Ar*** gerettet:biggrin::biggrin::biggrin:
     
  9. jogimuc, 30.05.2018 #9
    jogimuc

    jogimuc Junior Mitglied

    Hallo schön das es geht.
    Übrigens bei github ist es richtig.

    @lordzwieback nein der Browser hat es nicht von selber gecheckt. Denn du hast bestimmt keine Variablen benutz und eine String Addition Verknüpfung gemacht.
    Beim direkten eingeben tippt man automatisch das Leerzeichen.
    Bei den String Verknüpfungen wir das Leerzeichen gerne Vergessen.
    :rolleyes2:
     
  10. lordzwieback, 30.05.2018 #10
    lordzwieback

    lordzwieback Moderator Team-Mitglied

    Stimmt, is ja im Endeffekt ein String. :cursing:
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Eintrag in einer Datenbank mithilfe einer ListView löschen Android App Entwicklung Mittwoch um 17:26 Uhr
Android Studio: Auf Datenbank mit zwei Spinner zugreifen. Android App Entwicklung 07.06.2018
apk erstellen? Android App Entwicklung 11.04.2018
Was am besten für eine Datenbank benutzen? Android App Entwicklung 26.02.2018
Eigene Web DB für App Inventor Android App Entwicklung 10.02.2018
Spinner item in Datenbank schreiben mysql Android App Entwicklung 23.12.2017
[OFFEN] Keine doppelten Einträge in die Firebase Datenbank Android App Entwicklung 27.10.2017
[OFFEN] Übereinstimmung Spracherkennung Datenbank finden Android App Entwicklung 13.10.2017
[OFFEN] Komplette SQLite Datenbank verschlüsseln Android App Entwicklung 19.09.2017
[OFFEN] SQLITE insert gibt negative id zurück Android App Entwicklung 18.09.2017
Du betrachtest das Thema "SQLite Datenbank mit zwei Tabellen erstellen" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.