2017-08-02 60 views
-4

我没有明白它,它保持崩溃,即使我有检查代码是否正确。它只是不断告诉我没有这样的列日期。我将在这里发布我的代码,用于DBHelper类。引起:android.database.sqlite.SQLiteException:没有这样的列:日期(代码1):,编译时:SELECT ID,名称,描述,日期FROM任务

private static final String DATABASE_NAME = "tasks.db"; 
private static final int DATABASE_VERSION = 1; 
private static final String TABLE_TASK = "tasks"; 
private static final String COLUMN_ID = "id"; 
private static final String COLUMN_NAME = "name"; 
private static final String COLUMN_DESCRIPTION = "description"; 
private static final String COLUMN_DATE = "date"; 

@Override 
public void onCreate(SQLiteDatabase db) { 
    String createTaskTableSql = "CREATE TABLE " + TABLE_TASK + "(" 
      + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," 
      + COLUMN_NAME + " TEXT, " 
      + COLUMN_DESCRIPTION + " TEXT, " 
      + COLUMN_DATE + " DATETIME DEFAULT CURRENT_TIMESTAMP)"; 
    db.execSQL(createTaskTableSql); 
} 

public ArrayList<Lists> getAllLists() { 
    ArrayList<Lists> lists = new ArrayList<Lists>(); 

    String selectQuery = "SELECT " + COLUMN_ID + ", " 
      + COLUMN_NAME + ", " + COLUMN_DESCRIPTION + ", " + COLUMN_DATE + " FROM " + TABLE_TASK; 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    if (cursor.moveToFirst()) { 
     do { 
      int id = cursor.getInt(0); 
      String listsName = cursor.getString(1); 
      String desc = cursor.getString(2); 
      String date = cursor.getString(3); 
      Lists allLists = new Lists(id, listsName, desc, date); 
      lists.add(allLists); 
     } while (cursor.moveToNext()); 
    } 
    cursor.close(); 
    db.close(); 
    return lists; 
} 

我无法确定问题。有人请帮助我。

+1

试试哦......我的坏...你是正确的重新安装应用程序 – sumit

+0

。我只是重新安装我的应用程序,它工作得很好。 Thx sumit。 –

+1

,以便它不会再发生覆盖onUpgrade方法并重新创建表并更改数据库版本,每次更改代码中的内容 – sumit

回答

1

没有这样的列日

你有两个选择。

  1. 你应该卸载应用&再次运行
  2. 或者您可以修正onUpgrade方法。

DO

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

    // If you want to add a column 
    if (newVersion > oldVersion) { 
     db.execSQL("ALTER TABLE ADD_NAME ADD COLUMN NEW_COLOUM INTEGER DEFAULT 0"); // You can add TEXT Field 
    } 
} 
+1

*您不能使用名称字段日期*是的,他可以...'日期** **不是** SQLite关键字 – Selvin

+1

它已经正常工作。这个问题只是我必须重新安装应用程序并再次运行那部分你是对的。 –

+0

@MobileDeveloper的确如此。检查我编辑的答案 –

相关问题