2012-06-15 41 views
-1

我已经试过寻找虽然已经问了几个关于这个主题的问题,但我仍然无法让我的文件工作。我想也许有些直接的帮助可能正是我需要的,所以我虚心向社区寻求帮助。谢谢你的时间为什么不会SQLite数据库更新?添加列

public class RemindersDbAdapter { 

// 
// Database Related Constants 
// 
private static final String DATABASE_NAME = "data"; 
private static final String DATABASE_TABLE = "reminders"; 
private static final int DATABASE_VERSION = 3; 

public static final String KEY_TITLE = "title"; 
public static final String KEY_CUSTOMER = "body"; 
public static final String KEY_DATE_TIME = "reminder_date_time"; 
public static final String KEY_END_TIME = "reminder_end_time"; 
public static final String KEY_ROWID = "_id"; 


private static final String TAG = "ReminderDbAdapter"; 
private DatabaseHelper mDbHelper; 
private static SQLiteDatabase mDb; 

/** 
* Database creation SQL statement 
*/ 
private static final String DATABASE_CREATE = 
     "create table " + DATABASE_TABLE + " (" 
       + KEY_ROWID + " integer primary key autoincrement, " 
       + KEY_TITLE + " text not null, " 
       + KEY_CUSTOMER + " text not null, " 
       + KEY_DATE_TIME + " text not null);" ; 



private final Context mCtx; 

private static class DatabaseHelper extends SQLiteOpenHelper 
{ 

    DatabaseHelper(Context context) 
    { 

     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) 
    { 
     db.execSQL(DATABASE_CREATE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
    { 
     Log.w(TAG, "Upgrading database from version " + oldVersion + " to " 
       + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); 

     //Adding a Column 
    // If you need to add a column 
     if (newVersion > oldVersion) 
     { 
      //example I tried pulling from the internet 
      db.execSQL(
       "ALTER TABLE foo ADD COLUMN new_column INTEGER DEFAULT 0"); 
     } 

     onCreate(db); 
    } 
} 

回答

1

如果你想升级数据库,只需在你的CREATE语句中添加新列,然后增加版本。

你的代码试图将列添加到您刚才删除的表...

db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); // Delete table 
... 
db.execSQL("ALTER TABLE foo ADD COLUMN new_column INTEGER DEFAULT 0"); // Won't find the table 

简单地改变这样的:

private static final String DATABASE_CREATE = 
     "create table " + DATABASE_TABLE + " (" 
       + KEY_ROWID + " integer primary key autoincrement, " 
       + KEY_TITLE + " text not null, " 
       + KEY_CUSTOMER + " text not null, " 
       + KEY_DATE_TIME + " text not null, " 
       + "new_column INTEGER DEFAULT 0);" ; 
+0

谢谢你,看来我是在我的问题误。你看我最初没有添加列语句,我认为这是我应该更新一个数据库的另一个问题,我有。感谢您解决我引起的新问题。 – user1457104

+0

谢谢你的帮助,它现在运行,我只是现在有一个问题与其他东西哈哈。 – user1457104

+0

很高兴你正在取得进展!如果您在发布新问题后遇到问题,请将logcat错误与代码示例一起包含。 (他们真的帮助!) – Sam