[問題] SQLiteOpenHelper的奇怪現象?(解決)
找到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)
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章