我知道很多同名問題存在,但這次它是不同的,所以請完整閱讀。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)
我GOOGLE了這個,發現了幾個帖子,幾乎所有的然後建議我重新安裝應用程序,所以我卸載並重新安裝它,我得到同樣的錯誤。然後,我嘗試了一些可能性,並得出結論:`Create``聲明可能是錯誤的,它是,我錯過了一些逗號,所以我添加,然後再次收到同樣的錯誤。
任何想法這段代碼有什麼問題?
'私有靜態最後絃樂TABLE_NAME = 「MeetingDetails」;'你的表名確實是** MeetingDetails **,而不是** iListen **。 –
是否有什麼理由甚至需要數據庫名稱的最後一個字符串? –
@ cricket_007我將在課堂上多次使用數據庫,因此將其聲明爲final – Tyson