0

我一直在努力创建一个包含行的列表视图,这些行值显示存储在我的数据库中的信息。我的问题是如何解决出现“列_id 不存在”的错误?我在网上查看过,我发现您应该使用 as 定义列“_id”,但是当我这样做时它就失败了。也许我错过了一些东西,但在尝试了几种不同的方法后,我仍然得到了那个错误。有任何想法吗?

这是定义我的查询的方法:

    String sql = "create table " + TABLE + "(" + C_ID + " int primary key, " +
    C_WORKOUT_NAME + " text, " + C_CLASSNAME + " text, " + C_CREATED_AT + " text)";

    db.execSQL(sql);

这是将数据库值传递到我的行的代码:

@Override
protected void onResume(){
    super.onResume();

    cursor = db.query(DBHelper1.TABLE, null, null, null, null, null, 
    DBHelper1.C_CREATED_AT + " DESC");
    startManagingCursor(cursor);

    adapter = new SimpleCursorAdapter(this, R.layout.row, cursor, FROM, TO);
    list.setAdapter(adapter);
}

我也有

    static final string C_ID= "_id"

08-10 19:47:52.176: INFO/ActivityManager(67): 开始: Intent {cmp=edu.njit.hss/.History } 来自 pid 440 08-10 19:47:52.596: DEBUG/AndroidRuntime(440):关闭 VM 08-10 19:47:52.596: WARN/dalvikvm(440): threadid=1: thread exiting with unaught exception (group=0x40015560) 08-10 19:47:52.626: ERROR/AndroidRuntime(440): FATAL例外:主要 08-10 19:47:52.626:错误/AndroidRuntime(440):java.lang.RuntimeException:无法恢复活动 {edu.njit.hss/edu.njit.hss.History}:java.lang.IllegalArgumentException :列 '_id' 不存在 08-10 19:47:52.626: 错误/AndroidRuntime(440): 在 android.app.ActivityThread.performResumeActivity(ActivityThread.java:2095) 08-10 19:47:52.626: 错误/ AndroidRuntime(440): 在 android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2110) 08-10 19:47:52.626:错误/AndroidRuntime(440):在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1643)

4

1 回答 1

0

就个人而言,我需要更多信息来帮助你。它什么时候给出这个错误?当您显示的代码中没有对该列的请求时,怎么能说该列不存在?(我猜它是它的任何其他部分)

作为一个起点,我建议你看看数据库:

  • 如果您没有 root 设备,请在模拟器中执行您的应用程序
  • 从 DDMS 中提取文件 - 转到文件树并导航到 /data/data/your.app.package/databases/yourDatabaseName
  • 使用 sqlite 浏览器(Lita、SQLiteDBBrowser)打开它,查看它的外观并在此处更新信息(如果您仍然需要它)

...我们会在这里等你:)

于 2012-08-10T21:51:26.523 回答