SQLite Datenbank mit zwei Tabellen erstellen

  • 9 Antworten
  • Letztes Antwortdatum
D

DoctorBlack

Neues Mitglied
0
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!
 
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:
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 bearbeitet von einem Moderator:
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.
 
Semikolons fehlen keine.

Hier ist mal noch die GitHub Repository falls das hilft: JDR3/Stundenplan
 
Zuletzt bearbeitet:
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)";
 
  • Danke
Reaktionen: DoctorBlack
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..
 
Es lag tatsächlich am Leerzeichen, ich bin euch echt dankbar! Ihr habt mir den Ar*** gerettet:biggrin::biggrin::biggrin:
 
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:
 
Stimmt, is ja im Endeffekt ein String. :cursing:
 

Ähnliche Themen

R
Antworten
6
Aufrufe
1.113
swa00
swa00
S
Antworten
33
Aufrufe
3.430
Sempervivum
S
softwaretk
Antworten
5
Aufrufe
1.085
softwaretk
softwaretk
Zurück
Oben Unten