当前位置: 首页 > 面试题库 >

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

高建本
2023-03-14
问题内容

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

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

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

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);”处收到一个空指针异常。

看到故障了吗?


问题答案:

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

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

在您的情况下,可能类似于:

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


 类似资料:
  • 我正在使用java中的MySQL库执行一个查询。在我的数据库结构中,有一列名为(主键,非空且自动递增)。通常在每次插入查询中,我都将值设置为,在查询执行后,它会增加最后一个id,但在java中这样做会给我异常。 这就是代码: 如何使用自动增量ID执行查询?

  • 问题内容: 我在Flask微框架中使用Sqlite3,但是这个问题仅涉及Sqlite方面。 这是代码片段: 该表还有另一列,具有以下属性: , 如果两个人同时写,上面的代码可能会产生错误。 交易可能会很混乱。在Sqlite中,是否有一种整洁的内置方法可以返回执行INSERT之后生成的主键? 问题答案: 你这样做的方式是有效的。如果上面的片段被两个脚本同时执行,则不会有问题。返回调用它的连接的最新I

  • 问题内容: 我正在寻找这样的查询: id | int | 自动增量 varchar | 255 这样桌子就看起来像 1 | val1 2 | val2 3 | val3 … 除了id总是以每一行都结束而已。 我怎样才能做到这一点? 问题答案:

  • 我有一个表,我试图插入新行,但有一个列不会自动递增自己。有没有办法编写一个INSERT命令,根据列中的最高值自动递增该列?

  • 问题内容: 我有下面的SQL,我正在尝试使用它创建一个表和一些列。作为它的一部分,我希望其中两列自动递增一个整数。当我尝试使用以下代码时,它给我一个错误。 当我从SQL中删除关键字“ AUTOINCREMENT”时,它可以正常工作。 是否可以有两个自动增量列?如果不是,是否有办法让一列在插入时自动从另一列(自动递增)中获取值? 谢谢 问题答案: 您不能有两个自动增量字段。您应该使用一个自动增量字段

  • 问题内容: 我有一个PreparedStatement,例如: 如您所见,Employee表具有一个自动递增的ID。我基本上也需要使用prepareStatement自动添加它。有人可以告诉我我要去哪里哪里并纠正我吗?现在,这只是给我一个与Statement相关的错误。 问题答案: 将该列 完全 放在语句之外。它将由数据库引擎生成。您的查询应为: __ 其次,您必须先执行插入操作,然后再从结果中取