2013-12-14 41 views
0

我已卸载的应用程序,创建新的模拟器,但问题仍然存在,我没有线索,所以时间互联网帮助:)。 我有一列名为“sms_sentdate”在日志中这是失踪的列,而我检查的值是好的,问题出在架构,我找不出来的地方。Android SQLite问题表...没有列名

当你们在这里,请关于如何告诉应用程序,如果我当前的方法是错误的,架构已经更新。

public class SMSdb extends SQLiteOpenHelper{ 
private final static String DB_NAME = "SMSDB"; 
private final static int DB_VERSION = 4; 

private static final String KEY_ID = "sms_id"; 
private static final String KEY_Text = "sms_text"; 
private static final String KEY_SMSReceiver = "sms_reciever"; 
private static final String KEY_Recurrence = "sms_recurrence_id"; 
private static final String KEY_SentDate = "sms_sentdate"; 
private static final String TABLE_SMS = "sms"; 
private static final String[] COLUMNS = { KEY_ID, KEY_Text, KEY_SMSReceiver, KEY_Recurrence, KEY_SentDate}; 

public final static String DB_SMSdb_TABLE_CREATE = "create table sms " + 
     "("+KEY_ID+" integer primary key autoincrement, " + 
      KEY_Text +" text not null, "+ 
      KEY_SMSReceiver + " text not null,"+ 
      KEY_Recurrence+" integer);"+ 
      KEY_SentDate+" text);"; 

public SMSdb(Context context) 
{ 
    super(context, DB_NAME, null, DB_VERSION);  
} 

@Override 
public void onCreate(SQLiteDatabase database) { 
    // TODO Auto-generated method stub 
    Log.i("Database", "Database creating"); 
    database.execSQL(DB_SMSdb_TABLE_CREATE); 
} 

@Override 
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 
    database.execSQL("DROP TABLE IF EXISTS sms"); 
    onCreate(database);  
} 

public void addSms(SMS sms){ 
    Log.d("addSMS", sms.toString()); 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_Text, sms.getText()); 
    values.put(KEY_SMSReceiver, sms.getSmsReceiver()); 
    values.put(KEY_Recurrence, sms.getSms_recurrence_id()); 
    values.put(KEY_SentDate, sms.getSmsSentDate()); 

    db.insert(TABLE_SMS, 
      null, 
      values); 
    db.close(); 
} 

} 

回答

1

更换

KEY_Recurrence+" integer);"+ 
KEY_SentDate+" text);"; 

KEY_Recurrence+" integer,"+ 
KEY_SentDate+" text);"; 

的SQL终止在第一;并且不执行任何余下的SQL,所以你没有得到有关悬挂语法错误色谱柱规格。

+0

打我吧:) –

+0

该死的! ** Bloody Semicolon ** –

+0

谢谢! @laalto,我检查了一切,除了**; **,现在我感到羞愧:P –