2016-08-15 77 views
1

我有一个问题,当我尝试编译我的android apliccation。错误SQLite没有这样的列(代码1),同时编译

如果我添加一列(日期星)到数据库已经出现了一个错误:

android.database.sqlite.SQLiteException:没有这样的柱:出生日期(码1):在编译:SELECT _id,任务,地点,重要性,出生日期FROM todolist的ORDER BY重要性

这是类日数据库

public class DataBaseHelper { 
    private Context mCtx = null; 
    private DataBaseHelperInternal mDbHelper = null; 
    private SQLiteDatabase mDb = null; 
    private static final String DATABASE_NAME = "TODOLIST"; 
    private static final int DATABASE_VERSION = 200; 
    // tabla y campos 
    private static final String DATABASE_TABLE_TODOLIST = "todolist"; 
    public static final String SL_ID = "_id"; 
    public static final String SL_ITEM = "task"; 
    public static final String SL_PLACE = "place"; 
    public static final String SL_DATE = "fecha"; 
    public static final String SL_IMPORTANCE = "importance"; 
    public static final String SL_DESCRIPTION = "description"; 

    // SQL de creación de la tabla 
    private static final String DATABASE_CREATE_TODOLIST = 
      "create table " + DATABASE_TABLE_TODOLIST 
        +" (" + SL_ID + " integer primary key," 
        + SL_ITEM + " text not null," 
        + SL_PLACE + " text not null," 
        + SL_IMPORTANCE + " integer not null," 
        + SL_DESCRIPTION + " text," 
        + SL_DATE + " text" 
        + ");"; 

    //constructor 
    public DataBaseHelper(Context ctx) { 
     this.mCtx = ctx; 
    } 
    //clase privada para control de la SQLite 
    private static class DataBaseHelperInternal extends SQLiteOpenHelper { 
     public DataBaseHelperInternal(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 
     @Override 
     public void onCreate(SQLiteDatabase db) { 
      createTables(db); 
     } 
     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      deleteTables(db); 
      createTables(db); 
     } 
     private void createTables(SQLiteDatabase db) { 
      db.execSQL(DATABASE_CREATE_TODOLIST); 
     } 

     private void deleteTables(SQLiteDatabase db) { 
      db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_TODOLIST); 
     } 
    } 

    public DataBaseHelper open() throws SQLException { 
     mDbHelper = new DataBaseHelperInternal(mCtx); 
     mDb = mDbHelper.getWritableDatabase(); 
     return this; 
    } 

    public void close() { 
     mDbHelper.close(); 
    } 

    //obtener todos los elementos 
    public Cursor getItems() { 
     return mDb.query(DATABASE_TABLE_TODOLIST, new String[] {SL_ID,SL_ITEM,SL_PLACE,SL_IMPORTANCE,SL_DATE}, null, null, null, null, SL_IMPORTANCE); 
    } 

    //crear elemento 
    public long insertItem(String item, String date, String place, String description, int importance){ 
     ContentValues initialValues = new ContentValues(); 
     initialValues.put(SL_IMPORTANCE, importance); 
     initialValues.put(SL_ITEM, item); 
     initialValues.put(SL_DATE, date); 
     initialValues.put(SL_PLACE, place); 
     initialValues.put(SL_DESCRIPTION, description); 
     return mDb.insert(DATABASE_TABLE_TODOLIST, null, initialValues); 
    } 

    public Cursor getItem(int itemId){ 
     return mDb.rawQuery(" select "+ SL_ITEM+","+ SL_DATE+","+ SL_PLACE+","+ SL_DESCRIPTION+","+SL_IMPORTANCE + "," + SL_ID + " from " + DATABASE_TABLE_TODOLIST + " where " + SL_ID + "= ?",new String[]{Integer.toString(itemId)}); 
    } 

当您尝试从表中

收集数据出现的错误

谢谢大家!

回答

0

递增DATABASE_VERSION因此数据库模式被更新。 在创建表后,您可能在代码中添加了该列。

+0

非常感谢,现在它工作! –

0

我就是这样

private static final int DATABASE_VERSION = 200; 

所以我喜欢增加的dataversion过吗?

private static final int DATABASE_VERSION = 201; 
相关问题