2017-02-11 1 views
0

Я знаю много вопросов с тем же именем, но на этот раз все по-другому, поэтому, пожалуйста, прочитайте это полностью.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`` может быть ошибочным, и это было, я пропустил некоторые запятые, поэтому я добавил, что снова и снова получаю ту же ошибку.

Любая идея, что не так с этим кодом?

+1

'частных статических окончательное Строка table_name = "MeetingDetails";' Ваше имя таблицы действительно ** MeetingDetails **, не ** iListen **. –

+0

Есть ли причина, по которой вам понадобится окончательная строка для имени базы данных? –

+0

@ cricket_007 Я собираюсь использовать БД много раз в классе, поэтому объявил его окончательным – Tyson

ответ

3

Вы

db.insert(DATABASE_NAME,null,cValues); 

Ваших первые пары должно быть имя таблицы. Изменения в

db.insert(TABLE_NAME,null,cValues); 

Проверьте PARAMS @https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#insert(java.lang.String, java.lang.String, android.content.ContentValues)

+0

Не думал, что я допустил бы такую ​​ошибку. Он работал – Tyson

+0

@Tyson, но вы должны были проверить свои журналы, которые ясны ** нет такой таблицы: iListen ** – Raghunandan

+0

Я не догадывался, что я бы дал неправильная строка, я проверял запрос снова и снова и был убежден, что что-то не так с запросом create, поэтому не обращал внимания на то, что я написал в таблице – Tyson