作者tsaiminghan (nahgnimiast)
看板AndroidDev
标题[问题] SQLiteOpenHelper的奇怪现象?
时间Fri Dec 21 02:46:41 2012
找到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
1F:→ lovelycateye:我论多个逗号的可能性 12/21 09:40
2F:→ tsaiminghan:没有多逗号,我有印出来看 12/21 22:46
※ 编辑: tsaiminghan 来自: 36.229.224.123 (12/22 22:03)