When i try to insert a row into the "opmerkingen"-table, it throws an sqlexception saying there's no such table. I've tried changing the database version but this didn't do anything.
The method throwing the error is "voegOpmerkingToe" near the end of the code.
I have no idea how to fix this, any help would be very appreciated.
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.sql.SQLException;
/**
* Created by Michaël Desomer on 9/05/2015.
*/
public class DBAdapter {
static final String DATABASE_NAME = "SportingDatabase";
static final String DATABASE_TABLE_LID = "Lid";
static final String DATABASE_TABLE_SPORTSESSIE = "Sportsessie";
static final String DATABASE_TABLE_OPMERKINGEN = "Opmerkingen";
static final String DATABASE_TABLE_BADGES_PER_LID = "Badges_Per_Lid";
static final String DATABASE_TABLE_BADGES = "Badges";
static final int DATABASE_VERSION = 2;
static final String KEY_LID_LOGINNAAM = "loginnaam";
static final String KEY_LID_NAAM = "naam";
static final String KEY_LID_VOORNAAM = "voornaam";
static final String KEY_LID_LEEFTIJD = "leeftijd";
static final String KEY_LID_PASWOORD = "paswoord";
static final String KEY_SPORTSESSIE_LIDLOGIN = "lid_login";
static final String KEY_SPORTSESSIE_SPORTNAAM = "sportnaam";
static final String KEY_SPORTSESSIE_DUUR = "duur";
static final String KEY_OPMERKINGEN_OPMID = "opm_id";
static final String KEY_OPMERKINGEN_LIDLOGIN = "lid_login";
static final String KEY_OPMERKINGEN_OPMERKING = "opmerking";
static final String KEY_BADGESPERLID_BADGECODE = "badge_code";
static final String KEY_BADGESPERLID_LIDLOGIN = "lid_login";
static final String KEY_BADGES_BADGECODE = "badge_code";
static final String KEY_BADGES_AANTAL = "aantal";
static final String KEY_BADGES_DUUR = "duur";
static final String DATABASE_CREATE_LID = "create table if not exists Lid (" +
"loginnaam text primary key, " +
"naam text, voornaam text, " +
"leeftijd integer, " +
"paswoord text not null)";
static final String DATABASE_CREATE_SPORTSESSIE = "create table if not exists Sportsessie (" +
"lid_login text references Lid(loginnaam) deferrable initially deferred, " +
"sportnaam text, " +
"duur bigint, " +
"primary key(lid_login, sportnaam, duur)";
static final String DATABASE_CREATE_OPMERKINGEN = "create table if not exists Opmerkingen (" +
"opm_id integer primary key autoincrement, " +
"lid_login text not null references Lid(loginnaam) deferrable initially deferred, " +
"opmerking text not null)";
static final String DATABASE_CREATE_BADGESPERLID = "create table if not exists Badges_Per_Lid (" +
"badge_code text references Badges(badge_code) deferrable initially deferred, " +
"lid_login text references Lid(loginnaam) deferrable initially deferred)";
static final String DATABASE_CREATE_BADGES = "create table if not exists Badges (" +
"badge_code text primary key, " +
"aantal integer, " +
"duur bigint)";
final Context context;
DatabaseHelper DBHelper;
SQLiteDatabase db;
public DBAdapter(Context context){
this.context = context;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper{
DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try{
db.execSQL(DATABASE_CREATE_LID);
db.execSQL(DATABASE_CREATE_SPORTSESSIE);
db.execSQL(DATABASE_CREATE_OPMERKINGEN);
db.execSQL(DATABASE_CREATE_BADGESPERLID);
db.execSQL(DATABASE_CREATE_BADGES);
} catch(Exception e){
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
public DBAdapter open() throws SQLException{
db = DBHelper.getWritableDatabase();
return this;
}
public void close(){
DBHelper.close();
}
public void registreer(String login, String naam, String voornaam, int leeftijd, String paswoord) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_LID_LOGINNAAM, login);
initialValues.put(KEY_LID_NAAM, naam);
initialValues.put(KEY_LID_VOORNAAM, voornaam);
initialValues.put(KEY_LID_LEEFTIJD, leeftijd);
initialValues.put(KEY_LID_PASWOORD, paswoord);
db.insert(DATABASE_TABLE_LID, null, initialValues);
}
public Cursor getPaswoord(String login, String paswoord){
Cursor cursor = db.query(true, DATABASE_TABLE_LID, new String[]{KEY_LID_PASWOORD}, KEY_LID_LOGINNAAM + "='" + login+"'", null, null, null, null, null);
if(cursor != null){
cursor.moveToFirst();
}
return cursor;
}
public Cursor getLid(String login){
Cursor c = db.query(true, DATABASE_TABLE_LID, new String[]{KEY_LID_LOGINNAAM, KEY_LID_NAAM, KEY_LID_VOORNAAM, KEY_LID_LEEFTIJD, KEY_LID_PASWOORD}, KEY_LID_LOGINNAAM + "='" + login+"'", null, null, null, null, null);
if(c != null){
c.moveToFirst();
}
return c;
}
public void voegOpmerkingToe(String login, String opmerking){
ContentValues values = new ContentValues();
values.put(KEY_OPMERKINGEN_OPMERKING, opmerking);
values.put(KEY_OPMERKINGEN_LIDLOGIN, login);
db.insert(DATABASE_TABLE_OPMERKINGEN, null, values);
}
public Cursor getAlleOpmerkingen(String login){
Cursor c = db.query(true, DATABASE_TABLE_OPMERKINGEN, new String[]{KEY_OPMERKINGEN_OPMERKING}, KEY_OPMERKINGEN_LIDLOGIN + "='" + login + "'", null, null, null, null, null, null);
if(c != null){
c.moveToFirst();
}
return c;
}
}
The error message:
05-09 19:19:47.700 5635-5635/desomer_michael_2app.desomer_michael_eindopdracht_app E/SQLiteLog﹕ (1) no such table: Opmerkingen
05-09 19:19:47.730 5635-5635/desomer_michael_2app.desomer_michael_eindopdracht_app E/SQLiteDatabase﹕ Error inserting opmerking=lol lid_login=Micha12354
android.database.sqlite.SQLiteException: no such table: Opmerkingen (code 1): , while compiling: INSERT INTO Opmerkingen(opmerking,lid_login) VALUES (?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1118)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:691)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1589)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1461)
at desomer_michael_2app.desomer_michael_eindopdracht_app.Util.DBAdapter.voegOpmerkingToe(DBAdapter.java:147)
at desomer_michael_2app.desomer_michael_eindopdracht_app.SportSessieActivity.opmerkingToevoegen(SportSessieActivity.java:82)
at desomer_michael_2app.desomer_michael_eindopdracht_app.OpmerkingFragment.opmerkingToevoegenEnAfsluiten(OpmerkingFragment.java:53)
at desomer_michael_2app.desomer_michael_eindopdracht_app.OpmerkingFragment$1.onClick(OpmerkingFragment.java:41)
at android.view.View.performClick(View.java:4475)
at android.view.View$PerformClick.run(View.java:18786)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)
Aucun commentaire:
Enregistrer un commentaire