web-dev-qa-db-ja.com

AUTOINCREMENTはINTEGER PRIMARY KEYでのみ許可されます-android

それ自体が自動インクリメントであるIDを使用してDBにテーブルを作成しようとしていますが、クエリにAUTOINCREMENTキーワードを追加しようとすると、次のことがわかります。

AUTOINCREMENTはINTEGER PRIMARY KEYでのみ許可されます

これが私のクエリです:

@Override
public void onCreate(SQLiteDatabase db) {
    String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_TASKS + " ( "
            + KEY_ID + "INTEGER PRIMARY KEY AUTOINCREMENT, "
            + KEY_NOTETITLE + " TEXT, " + KEY_NOTECONTENT + " Text, "
            + KEY_STATUS + " INTEGER)";
    db.execSQL(sql);
}

また、AUTO_INCREMENTを書き込もうとしましたが、構文エラーが発生しました。

これが問題の原因であることがわかりました。AUTOINCREMENTワードを削除しようとすると、うまく機能するからです。

だから...問題は何だと思いますか?

13
David Lasry

KEY_ID AND INTEGERの間にスペースを追加する必要があります

だから変更

+ KEY_ID + "INTEGER PRIMARY KEY AUTOINCREMENT, "

+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
29
Apoorv

整数の主キーを持つテーブルを作成します。AUTOINCREMENTに明示的に言及する必要はありません。

例えば.

CREATE TABLE t1(
  a INTEGER PRIMARY KEY,
  C TEXT
); 

Insert into t1(C) values("Hello");
6
user3507327

このようなテーブルを作成すると、INTEGER ...の前にスペースが置かれます。

"CREATE TABLE "+TABLE_NAME+" ("+KEY_ID+" INTEGER PRIMARY KEY AUTOINCREMENT)";
0
Umair