Android SQLite例外没有这样的列

Android SQLite例外没有这样的列,android,eclipse,sqlite,Android,Eclipse,Sqlite,我在Android应用程序中的数据库有问题。下面是一些代码: private static final String QUESTIONS_TABLE = "questions"; /* questions keys */ public static final String KEY_ROWID = "_id"; public static final String KEY_TYPE = "type"; public static final String KEY_CONTENT = "conte

我在Android应用程序中的数据库有问题。下面是一些代码:

private static final String QUESTIONS_TABLE = "questions";
/* questions keys */
public static final String KEY_ROWID = "_id";
public static final String KEY_TYPE = "type";
public static final String KEY_CONTENT = "content";
public static final String KEY_A = "answerA";
public static final String KEY_B = "answerB";
public static final String KEY_C = "answerC";
public static final String KEY_D = "answerD";

private static final String QUESTIONS_TABLE_CREATE = 
    "create table "+ QUESTIONS_TABLE +" (" + KEY_ROWID + " integer primary key autoincrement, "
    + KEY_TYPE + "integer not null,"
    + KEY_CONTENT + " text not null, "
    + KEY_A + " text, "
    + KEY_B + "text, "
    + KEY_C + "text, "
    + KEY_D + "text); ";

//--- QUESTIONS SECTION ---
//--- inserts a close question ---
public long insertCloseQuestion(int type, String content, String[] answers) {
    ContentValues initValues = new ContentValues();
    initValues.put(KEY_TYPE, type);
    initValues.put(KEY_CONTENT, content);
    if(answers != null && answers.length > 0) {
        initValues.put(KEY_A, answers[0]);
        initValues.put(KEY_B, answers[1]);
        initValues.put(KEY_C, answers[2]);
        initValues.put(KEY_D, answers[3]);
    }
    Log.d("VM", initValues.toString());

    return db.insertOrThrow(QUESTIONS_TABLE, null, initValues);
}
当我调用insertCloseQuestion方法时,Android返回一个异常:

android.database.sqlite.SQLiteException: table questions has no column named answerD: , while compiling: INSERT INTO questions(answerD, content, answerB, answerC, type, answerA) VALUES(?, ?, ?, ?, ?, ?);
你有什么办法修理它吗?我知道有很多这样的话题,但没有一个解决方案对我有帮助

private static final String QUESTIONS_TABLE_CREATE = 
    "create table "+ QUESTIONS_TABLE +" (" + KEY_ROWID + " integer primary key autoincrement, "
    + KEY_TYPE + "integer not null,"
    + KEY_CONTENT + " text not null, "
    + KEY_A + " text, "
    + KEY_B + "text, "
    + KEY_C + "text, "
    + KEY_D + "text); ";
我猜列名和它的类型之间没有空格<代码>键+文本,在文本前加空格(此处和其他列)

不要忘记删除数据库之后(卸载应用程序从手机)

我猜列名和它的类型之间没有空格<代码>键+文本,在文本前加空格(此处和其他列)


不要忘记删除数据库之后(卸载应用程序从手机)

代码中的一个错误可以在字符串问题表中找到 您的代码使用+KEY_B+“text”,这将在应答文本中生成最后一个字符串。 在文本开头添加空格。 下面的代码应该修复它

如果代码中没有其他错误(此处显示的部分对我来说似乎没问题)。这将解决您的问题:

private static final String QUESTIONS_TABLE_CREATE = 
    "create table "+ QUESTIONS_TABLE +" (" + KEY_ROWID + " integer primary key autoincrement, "
    + KEY_TYPE + " integer not null,"
    + KEY_CONTENT + " text not null, "
    + KEY_A + " text, "
    + KEY_B + " text, "
    + KEY_C + " text, "
    + KEY_D + " text); ";

代码中的一个错误出现在字符串问题表中 您的代码使用+KEY_B+“text”,这将在应答文本中生成最后一个字符串。 在文本开头添加空格。 下面的代码应该修复它

如果代码中没有其他错误(此处显示的部分对我来说似乎没问题)。这将解决您的问题:

private static final String QUESTIONS_TABLE_CREATE = 
    "create table "+ QUESTIONS_TABLE +" (" + KEY_ROWID + " integer primary key autoincrement, "
    + KEY_TYPE + " integer not null,"
    + KEY_CONTENT + " text not null, "
    + KEY_A + " text, "
    + KEY_B + " text, "
    + KEY_C + " text, "
    + KEY_D + " text); ";

它起作用了!非常感谢:)(我还错过了一个空格后的键_类型)。当我读到你的答案时,它是如此明显。但当我在30分钟后开始编写这段代码时,我没有发现任何错误:DIt有效!非常感谢:)(我还错过了一个空格后的键_类型)。当我读到你的答案时,它是如此明显。但是当我从30分钟开始主演这段代码时,我没有发现任何错误:DThanks,@Yury也发现了这个错误:)这也是我的功劳)我想应该在时间上做点什么。但是现在,如果出现1分钟的差异,我想这是不可能的。谢谢,@Yury也发现了这个错误:)这是我的功劳(我也认为应该对时间做些事情)。但是现在,如果有1分钟的差距,我想这是不可能的。