我有一个数据库设置来存储笔记。我想自动增加第一列。我试过这个,但是当我从数据库中读取时,该列中的每个结果都是'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
答案 0 :(得分:0)
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
简而言之:自动增量仅适用于整数主键。