2013-08-19 2 views
3

У меня есть таблица с именем человека, с 3-мя колоннами .Они являются ID, ИМЯ и ПАРОЛЬ .I необходимо добавить новый столбец с именем AGE .Я попробовать это так, но она не работает для меня, пожалуйста, помогите мне решить эту проблемуОбновление SQLite стол в андроида

public class Userdb { 
    public static final String KEY_ROWID = "Id"; 
    public static final String KEY_NAME = "Person_name"; 
    public static final String KEY_PASSWORD = "Person_password"; 
    public static final String KEY_AGE = "Person_age"; 

    private static final String DATABASE_NAME = "People_db_1"; 
    private static final String DATABASE_TABLE = "people_table"; 
    private static final int DATABASE_VERSION = 1; 


    private static class Dbhelper extends SQLiteOpenHelper { 

     public Dbhelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
      // TODO Auto-generated constructor stub 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      // TODO Auto-generated method stub 

      db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID 
        + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME 
        + " TEXT NOT NULL, " + KEY_PASSWORD + " TEXT NOT NULL); "); 

     } 


     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      // TODO Auto-generated method stub 

      db.execSQL("DROP TABLE IF EXISTS" + DATABASE_TABLE); 
      db.execSQL("ALTER TABLE " + DATABASE_TABLE +" ADD COLUMN "+ KEY_AGE +" TEXT NOT NULL ; "); 
      onCreate(db); 

     } 

    } 

ответ

5

базы данных Обновление

конструкторе реализации SQLiteOpenHelper следует назвать супер конструктор, проходя по имени и версии базы данных. Метод onUpgrade() вызывается только тогда, когда целое число версии больше текущей версии, запущенной в эмуляторе. Если вы хотите вызвать метод onUpgrade(), вам необходимо увеличить номер версии в вашем коде.

See More о OnCreate() и onUpgrade()

1

Я не думаю, что есть ALTER COLUMN в SQLITE.

Просто следуйте инструкциям, как это было предложено в this link

Позвольте мне знать, если это помогает.

1

Вновь добавленный столбец содержит значения NULL (или любое другое значение, указанное в предложении DEFAULT), поэтому вы не можете добавить столбец с ограничением NOT NULL. Кроме того, вы не можете добавить столбец в таблицу, которая не существует (потому что вы только что сбросили ее).

Вы можете

  • удалить NOT NULL ограничение или добавить пункт DEFAULT (и не уронить таблицу); или
  • отбросьте старую таблицу и создайте новую таблицу с помощью всего CREATE TABLE.
+0

мне нужно позвонить onupgrade() метод вручную делать? – SAGA

+0

Вы можете указать ограничение, отличное от нуля, если вы также указываете значение по умолчанию. –