[問題] SQLiteOpenHelper的奇怪現象?(解決)

看板AndroidDev作者 (nahgnimiast)時間13年前 (2012/12/21 02:46), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串1/1
找到bug 建不出來是我code有寫錯, 我在updata的時候,先把table清掉,但是沒重新建回來, 所以把db抓出來的時候,一直沒看到table. ------------------------------------ 在這樣子可以成功建立table =================================================== public void onCreate(SQLiteDatabase arg0) { String KEY_ID = "dataId"; String KEY_DATE = "content"; String KEY_SESSION = "subject"; String TABLE_PRIZE = "service"; String CREATE_PRIZE_TABLE = "CREATE TABLE " + TABLE_PRIZE + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_SESSION + " TEXT," + KEY_DATE + " TEXT" + ");"; arg0.execSQL(CREATE_PRIZE_TABLE); } ======================================================== 下面的方法就不行,但也沒有例外發生,只是table不會建出來 getCreateCmd是用for迴圈把字串合出來 ==================================================== public void onCreate(SQLiteDatabase arg0) { String cmd = getCreateCmd(); arg0.execSQL(cmd); } ====================================================== 我有把兩個字串寫在一起用 cmd.quals(CREATE_PRIZE_TABLE) 比較過,兩者相同,實際內容如下 CREATE TABLE service(dataId INTEGER PRIMARY KEY AUTOINCREMENT, subject TEXT,content TEXT); 有人知道為什麼第二個方式的字串出不來嗎? 完整的getCreateCmd,基本上就只是把字串拼出來。 ======================================================== private String getCreateCmd(base b){ String cmd = String.format("CREATE TABLE %s(dataId INTEGER PRIMARY KEY AUTOINCREMENT" , b.mTABLE); for(int i=0; i<b.mTypes.length; i++){ switch(b.mTypes[i]){ case base.INTEGER: cmd += String.format(",%s INTEGER", b.mNames[i]); break; case base.VARCHAR: cmd += String.format(",%s TEXT", b.mNames[i]); break; } } cmd += ");"; return cmd; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.229.224.243

12/21 09:40, , 1F
我論多個逗號的可能性
12/21 09:40, 1F

12/21 22:46, , 2F
沒有多逗號,我有印出來看
12/21 22:46, 2F
※ 編輯: tsaiminghan 來自: 36.229.224.123 (12/22 22:03)
文章代碼(AID): #1GqrqK5T (AndroidDev)
文章代碼(AID): #1GqrqK5T (AndroidDev)