Я знаю много вопросов с тем же именем, но на этот раз все по-другому, поэтому, пожалуйста, прочитайте это полностью.Android SQLite нет такой таблицы найдена ошибка
Мой SQLite код выглядит следующим образом
public class DBHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "iListen";
private static final String TABLE_NAME = "MeetingDetails";
private static final String KEY_MEETING_NAME = "MeetingName";
private static final String KEY_CONFERENCE_DESC = "ConferenceDescription";
private static final String KEY_TIME = "MeetingTime";
private static final String KEY_DURATION = "MeetingDuration";
private static final String KEY_CREATE_TIME = "CreationTime";
private static final String KEY_PRESENTER = "MeetingPresenter";
private static final String KEY_MEETING_KEY= "MeetingId";
private static final String KEY_MEETING_STATUS = "Flag";
public DBHandler(Context context){
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_MEETING_TABLE = "CREATE TABLE " + TABLE_NAME + "("
+ KEY_MEETING_KEY + " INTEGER PRIMARY KEY," + KEY_MEETING_NAME+ " TEXT," +KEY_CONFERENCE_DESC+ " TEXT,"+ KEY_TIME+ " TEXT,"+KEY_DURATION+ " TEXT,"+KEY_CREATE_TIME+" TEXT,"+
KEY_PRESENTER+" TEXT,"+KEY_MEETING_STATUS+" INTEGER"+")";
db.execSQL(CREATE_MEETING_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS"+TABLE_NAME);
onCreate(sqLiteDatabase);
}
public long addMeeting(MeetingList meetingList){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cValues = new ContentValues();
cValues.put(KEY_MEETING_KEY, meetingList.getId());
cValues.put(KEY_MEETING_NAME, meetingList.getMeetingName());
cValues.put(KEY_CONFERENCE_DESC,meetingList.getConferenceDesc());
cValues.put(KEY_TIME,meetingList.getTime());
cValues.put(KEY_DURATION, meetingList.getDuration());
cValues.put(KEY_CREATE_TIME, meetingList.getCreateTime());
cValues.put(KEY_PRESENTER, meetingList.getPresenter());
cValues.put(KEY_MEETING_STATUS,meetingList.getStatus());
long output = db.insert(DATABASE_NAME,null,cValues);
db.close();
return output;
}
public MeetingList getMeeting(Integer id){
SQLiteDatabase db = this.getReadableDatabase();
// Cursor cr = db.query(TABLE_NAME,new String[]{KEY_MEETING_KEY,KEY_MEETING_NAME, KEY_CONFERENCE_DESC,KEY_TIME,KEY_DURATION,KEY_CREATE_TIME,KEY_PRESENTER,KEY_MEETING_STATUS},KEY_MEETING_KEY+"=?",new String[]
// {String.valueOf(id)},null,null,null,null);
Cursor cr = db.rawQuery("select * from "+TABLE_NAME+" where "+KEY_MEETING_KEY+" = ?",new String[] {id.toString()});
MeetingList list;
if(cr.moveToFirst()) {
// cr.moveToFirst();
list = new MeetingList(Integer.parseInt(cr.getString(0)), cr.getString(1), cr.getString(2), cr.getString(3), cr.getString(4), cr.getString(5), cr.getString(6), Integer.parseInt(cr.getString(7)));
}else{
list = null;
}
return list;
}
}
Я попытался вставить строку в БД, но он был всегда возвращался -1
так, когда я смотрел на журналы, я увидел эту ошибку
Error inserting CreationTime=Time = 13-02-2017 9 : 13 MeetingDuration=5 MeetingId=1 Flag=-1 ConferenceDescription=Thus club meeting was going to be held yesterday MeetingTime=Time = 13-02-2017 9 : 13 MeetingName=meeting 2 MeetingPresenter=Randomuser
android.database.sqlite.SQLiteException: no such table: iListen (code 1): , while compiling: INSERT INTO iListen(CreationTime,MeetingDuration,MeetingId,Flag,ConferenceDescription,MeetingTime,MeetingName,MeetingPresenter) VALUES (?,?,?,?,?,?,?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
Я просмотрел эту статью и нашел несколько сообщений, и почти все предложили мне переустановить приложение, поэтому я удалил и установил его снова, и я получаю ту же ошибку. Затем я попробовал некоторые возможности и пришел к выводу, что оператор `Create`` может быть ошибочным, и это было, я пропустил некоторые запятые, поэтому я добавил, что снова и снова получаю ту же ошибку.
Любая идея, что не так с этим кодом?
'частных статических окончательное Строка table_name = "MeetingDetails";' Ваше имя таблицы действительно ** MeetingDetails **, не ** iListen **. –
Есть ли причина, по которой вам понадобится окончательная строка для имени базы данных? –
@ cricket_007 Я собираюсь использовать БД много раз в классе, поэтому объявил его окончательным – Tyson