Java 为什么sqlite自动增量不是递增的?

Java 为什么sqlite自动增量不是递增的?,java,android,sqlite,Java,Android,Sqlite,我已经建立了一个数据库来存储笔记。我想自动增加第一列。我已经试过了,但是当我从数据库中读取时,该列中的每个结果都是“null”。这是创建数据库的代码 private static final String NOTES_TABLE_CREATE = "CREATE TABLE " + NOTES_TABLE_NAME + " (" + COLUMN_NAMES[0] + " INTEGER AUTO_INCREMENT, " +

我已经建立了一个数据库来存储笔记。我想自动增加第一列。我已经试过了,但是当我从数据库中读取时,该列中的每个结果都是“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

sqlite中不支持自动增量(与相对)

这有点不明显,因为sqlite会自动忽略它无法识别的列约束:

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
仅支持整数主键,因此不支持明显的解决方法,或者:

sqlite> CREATE TABLE test (a INTEGER AUTOINCREMENT NOT NULL, b INTEGER);
Error: near "AUTOINCREMENT": syntax error

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

表中是否实际包含任何数据?是的,第二个System.out.println输出notetitle1234567890。我还能够添加数据并用数据填充列表。只是自动增量列似乎没有记录任何内容,因为您没有将其应用于
整型主键
列。@PetSerAl
整型自动增量
(不带
主键
)将删除语法错误。这种静默解析是因为输入错误
AUTO\u INCREMENT
。Sqlite会自动忽略不受支持的列约束。