SQLite 自动增量 - 如何插入值?

2022-08-31 16:37:59

我生成一个 SQLite 表(在 java 中):

create table participants (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, col1,col2);

之后,我尝试使用 INSERT comand 添加行:

insert into participants values ("bla","blub");

我得到错误:

java.sql.SQLException: table participants has 3 columns but 2 values were supplied

我以为行ID会自动生成,但似乎我错过了任何东西。


我尝试了另一种解决方案:

PreparedStatement prep = conn.prepareStatement("insert into participants values (?,?,?);");
Integer n = null;
prep.setInt(1,n);
prep.setString(2, "bla");
prep.setString(3, "blub");
prep.addBatch();
prep.executeBatch();

结果,我在“prep.setInt(1,n)”处收到了一个空指针异常。

你看到错误了吗?


答案 1

您是否尝试过指示要传递的参数应该与表中的哪些字段相关?

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

在你的情况下,也许像这样:

INSERT INTO participants(col1, col2) VALUES ("bla","blub");

答案 2

不使用列名的最简单方法是在自动增量的位置使用 null,如下所示

insert into table values (null, col1, col2)

如果您已将第一列设置为自动增量,它将正常工作。


推荐