Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite:表X没有名为Y的列_Android_Sqlite - Fatal编程技术网

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中。无论您是什么平台,此解决方案无论如何都有效