Android SQLite:表X没有名为Y的列
我在这里读了很多关于上述问题的帖子/问题,但似乎没有任何解决方案适合我。以下是我的数据库创建:Android SQLite:表X没有名为Y的列,android,sqlite,Android,Sqlite,我在这里读了很多关于上述问题的帖子/问题,但似乎没有任何解决方案适合我。以下是我的数据库创建: public static final String TABLE_CARDS = "cards"; public static final String COLUMN_ID = "_id"; public static final String COLUMN_QUESTION = "question"; public static final String COLUMN_ANSWER
public static final String TABLE_CARDS = "cards";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_QUESTION = "question";
public static final String COLUMN_ANSWER = "answer";
private static final String DATABASE_NAME = "cards.db";
private static final int DATABASE_VERSION = 1;
// Database creation sql statement
private static final String DATABASE_CREATE = "create table "
+ TABLE_CARDS + "("
+ COLUMN_ID + " integer primary key autoincrement, "
+ COLUMN_QUESTION + " text not null, "
+ COLUMN_ANSWER + " text not null);";
在这里,我向数据库传递一个新对象:
public Card createCard(String question, String answer) {
ContentValues values = new ContentValues();
values.put(MySQLiteHelper.COLUMN_QUESTION, question);
values.put(MySQLiteHelper.COLUMN_ANSWER, answer);
long insertId = database.insert(MySQLiteHelper.TABLE_CARDS, null,
values);
Cursor cursor = database.query(MySQLiteHelper.TABLE_CARDS,
allColumns, MySQLiteHelper.COLUMN_ID + " = " + insertId, null,
null, null, null);
cursor.moveToFirst();
Card newCard = cursorToCard(cursor);
cursor.close();
return newCard;
}
编辑:
错误消息:
10-12 07:07:55.503: E/SQLiteDatabase(796): Error inserting answer=testanw question=testqu
10-12 07:07:55.503: E/SQLiteDatabase(796): android.database.sqlite.SQLiteException: table cards has no column named answer (code 1): , while compiling: INSERT INTO cards(answer,question) VALUES (?,?)
10-12 07:07:55.503: E/SQLiteDatabase(796): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
10-12 07:07:55.503: E/SQLiteDatabase(796): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
10-12 07:07:55.503: E/SQLiteDatabase(796): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
10-12 07:07:55.503: E/SQLiteDatabase(796): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
10-12 07:07:55.503: E/SQLiteDatabase(796): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
10-12 07:07:55.503: E/SQLiteDatabase(796): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
10-12 07:07:55.503: E/SQLiteDatabase(796): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
10-12 07:07:55.503:E/SQLiteDatabase(796):插入答案时出错=testanw问题=testqu
10-12 07:07:55.503:E/SQLiteDatabase(796):android.database.sqlite.SQLiteException:表格卡片没有名为“答案”(代码1)的列,编译时:插入卡片(答案,问题)值(?,)
10-12 07:07:55.503:E/SQLiteDatabase(796):在android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)
10-12 07:07:55.503:E/SQLiteDatabase(796):在android.database.sqlite.SQLiteConnection.acquiredpreparedstatement(SQLiteConnection.java:889)
10-12 07:07:55.503:E/SQLiteDatabase(796):在android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
10-12 07:07:55.503:E/SQLiteDatabase(796):在android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
10-12 07:07:55.503:E/SQLiteDatabase(796):位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
10-12 07:07:55.503:E/SQLiteDatabase(796):位于android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
10-12 07:07:55.503:E/SQLiteDatabase(796):位于android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
问题是,只要我想写入数据库,它就会抛出这个错误。我想在我的卡片数据库中存储一个名为问答的字符串。很抱歉错过了这些信息 卸载你的应用程序,然后重新安装。您以前可能创建过此表,但此列在早期版本的应用程序中不存在
添加列并且不使用更新方法时,现有表不会添加新列。这并不是说每次在开发过程中更改架构时都应该使用
onUpdate
,onUpdate
应该在实际发布应用程序的新版本时使用。当您不使用onUpdate()时方法,然后每当您在表中添加新列时,只需更改数据库的名称。是否可以发布错误消息?“上述问题”。。。在什么之上?@Bhushan啊哈…-无论如何,正如前面提到的,错误信息和对预期结果的简要解释会给我们带来很大的帮助;-)卸载并重新安装你的应用程序,或者单击“设置”中其条目上的“清除数据”。您好,我添加了一些信息。您需要更多信息吗?谢谢!重新安装应用程序修复了它。我在创建表的SQL语句中丢失了一个空格,找到了这个bug并修复了它。但我没有重新安装。谢谢大家!@Szymon重新安装应用程序解决了我的问题。谢谢。“卸载你的应用程序并重新安装”对我来说很有用。。。但是在iOS和swift 3中。无论您是什么平台,此解决方案无论如何都有效