为什么sqlite auto_increment没有递增?

时间:2017-04-09 17:02:23

标签: java android sqlite

我有一个数据库设置来存储笔记。我想自动增加第一列。我试过这个,但是当我从数据库中读取时,该列中的每个结果都是'null'。

这是创建数据库的代码。

private static final String NOTES_TABLE_CREATE =
        "CREATE TABLE " + NOTES_TABLE_NAME + " (" +
                COLUMN_NAMES[0] + " INTEGER AUTO_INCREMENT, " +
                COLUMN_NAMES[1] + " TEXT, " +
                COLUMN_NAMES[2] + " TEXT, " +
                COLUMN_NAMES[3] + " TEXT, " +
                COLUMN_NAMES[4] + " TEXT, " +
                COLUMN_NAMES[5] + " TEXT, " +
                COLUMN_NAMES[6] + " TEXT);";


这是获取数据库结果的代码。

    SQLiteDatabase db = this.getReadableDatabase();

    Cursor result = db.query(NOTES_TABLE_NAME, COLUMN_NAMES, null, null, null, null, null, null);

    result.moveToFirst();
    result.moveToNext();

    System.out.println(result.getInt(0));
    System.out.println(result.getString(1));


这是logcat的输出

04-09 17:56:17.981 22147-22147/com.example.a8460p.locationotes I/System.out: 0
04-09 17:56:17.981 22147-22147/com.example.a8460p.locationotes I/System.out: notetitle1234567890

1 个答案:

答案 0 :(得分:0)

sqlite不支持

NextPaymentDate(而不是INTEGER PRIMARY KEY AUTOINCREMENT)。

这有点不明显,因为sqlite默默地忽略了它无法识别的列约束:

AUTO_INCREMENT
另一方面,

sqlite> CREATE TABLE test ( a INTEGER FABBELBABBEL NOT NULL ); sqlite> .schema test CREATE TABLE test (a INTEGER FABBELBABBEL NOT NULL); sqlite> INSERT INTO test (a) VALUES (1); sqlite> INSERT INTO test (a) VALUES (NULL); Error: NOT NULL constraint failed: test.a 仅支持整数主键,因此不支持明显的解决方法尝试:

AUTOINCREMENT

简而言之:自动增量仅适用于整数主键。