我在记事本示例中无法正常工作。这是NotepadCodeLab / Notepadv1Solution中的代码:
String[] from = new String[] { NotesDbAdapter.KEY_TITLE };
int[] to = new int[] { R.id.text1 };
SimpleCursorAdapter notes = new SimpleCursorAdapter(this,
R.layout.notes_row, c, from, to);
这段代码似乎工作正常。但要清楚一点,我运行ADB 实用程序并运行SQLite3。我检查了以下架构:
sqlite> .schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE notes (_id integer primary key autoincrement, title text
not null, body text not null);
对我来说一切都很好。
现在进入我的应用程序,据我所见,它基本上是相同的,但有一些小的更改。我已经简化并简化了代码,但是问题仍然存在。
String[] from = new String[] { "x" };
int[] to = new int[] { R.id.x };
SimpleCursorAdapter adapter = null;
try
{
adapter = new SimpleCursorAdapter(this, R.layout.circle_row, cursor, from, to);
}
catch (RuntimeException e)
{
Log.e("Circle", e.toString(), e);
}
在运行应用程序时,我从Log.e()
语句中得到RuntimeException并在LogCat中打印以下内容:
LogCat消息:
java.lang.IllegalArgumentException:列“ _id”不存在
因此,回到SQLite 3来了解我的架构有什么不同:
sqlite> .schema创建表android_metadata(语言环境TEXT);创建表圈(_id整数主键自动递增,序列整数,半径实数,x实数,y实数);
我看不到我怎么想念'_id'。
我做错了什么?
我的应用程序和记事本示例之间的不同之处在于,我首先使用Eclipse向导从头开始创建了应用程序,而示例应用程序已经放在一起。我需要对新应用程序使用SQLite数据库进行某种环境更改吗?