ROWID INTEGER PRIMARY KEY AUTOINCREMENT - 如何插入值?

新手上路,请多包涵

我用 Java 创建了一个 SQLite 表:

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

我试图添加行:

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

错误:

java.sql.SQLException:表参与者有 3 列,但提供了 2 个值

我以为 ROWID 会自动生成。我尝试了另一种解决方案:

 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); 收到空指针异常。你看到错了吗?

原文由 Anthea 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 395
2 个回答

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

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

在你的情况下可能是这样的:

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

原文由 seth 发布,翻译遵循 CC BY-SA 3.0 许可协议

不使用列名的最简单方法是 使用 null 代替 自动增量,就像这样

insert into table values (null, col1, col2)

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

原文由 Padhu 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题