Android 创建SQLite表时出现运行时异常

Android 创建SQLite表时出现运行时异常,android,sqlite,Android,Sqlite,我正在创建一个android应用程序,并使用一个数据库。我使用的其中一个表是学期表,它是使用以下语句创建的: final String createSemesterTable = "CREATE TABLE IF NOT EXISTS" + semesterTable + "( " + _id + " INTEGER PRIMARY KEY AUTOINCREMENT," + semesterName + " TEXT," + isCurrent + " INTEGER," + GPA +

我正在创建一个android应用程序,并使用一个数据库。我使用的其中一个表是学期表,它是使用以下语句创建的:

final String createSemesterTable = 
"CREATE TABLE IF NOT EXISTS" + semesterTable + 
"( " + _id + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
semesterName + " TEXT," +
isCurrent + " INTEGER," +
GPA + " REAL" + ");";
简单版本:

CREATE TABLE IF NOT EXISTS Semesters(
_id INTEGER PRIMARY KEY AUTOINCREMENT,
semester_name TEXT,
is_current TEXT
GPA REAL);
在我的主要活动中,我尝试创建一个链接到列表视图的游标适配器,使用数据库中的数据填充项目

以下是我的onCreate(..)方法的一部分:

但是,当我编译/运行时,会收到以下消息:

07-06 20:34:25.950: E/AndroidRuntime(2825): java.lang.RuntimeException: Unable to start activity 
 android.database.sqlite.SQLiteException: no such column: _id (code 1): ,
while compiling: SELECT _id,     Semester_Name, Is_Current, GPA FROM Semesters
我看不出有什么不对,因为我使用了一个_id列(这实际上是SQLite所需要的)。 另外,为什么需要_id列(按该名称)?如果我有多个表,我可以为它们的主键设置不同的名称,还是每个表都需要_id


谢谢。

根据Logcat,我认为您必须删除数据库(可能是通过卸载应用程序),然后尝试运行应用程序。这将重新创建您的数据库。一种可能性是,您已经创建了表,但由于从未创建
\u id
列,因此某个地方的
选择失败。

是的!成功了!我想我现在可以在我的ondestory()方法中添加DROP TABLE语句。谢谢。在“存在”之后加个空格怎么样?比如说,
“…存在”+semestable…
是的,我知道了。。
07-06 20:34:25.950: E/AndroidRuntime(2825): java.lang.RuntimeException: Unable to start activity 
 android.database.sqlite.SQLiteException: no such column: _id (code 1): ,
while compiling: SELECT _id,     Semester_Name, Is_Current, GPA FROM Semesters