Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQLite自动增量-如何插入值?_Java_Sqlite_Auto Increment - Fatal编程技术网

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

Java SQLite自动增量-如何插入值?,java,sqlite,auto-increment,Java,Sqlite,Auto Increment,我生成一个SQLite表(java): 之后,我尝试使用INSERT comand添加行: insert into participants values ("bla","blub"); 我得到一个错误: java.sql.SQLException: table participants has 3 columns but 2 values were supplied 我以为行id会自动生成,但似乎我遗漏了什么 我尝试了另一种解决方案: PreparedStatement prep = c

我生成一个SQLite表(java):

之后,我尝试使用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);”处收到一个空指针异常


您看到故障了吗?

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

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
在您的情况下,可能类似于:

INSERT INTO participants(col1, col2) VALUES ("bla","blub");
找到了一个有效的解决方案:


错误的原因是,SQL Inserts希望您在不使用列说明符的情况下提供与表中的列数相同的值

i、 e.当您编写如下SQL查询时:

INSERT INTO TableName VALUES(a1,a2, ...)
。。值的顺序必须与表定义中的顺序完全相同(数量也必须相同)。这样做的原因是为了避免歧义并减少错误的数量

在本例中,您有一个自动递增列,您不想为其指定值。这当然是可能的,但按照上述规则,您需要指定列名:

INSERT INTO TableName (columnName1, columnName2) VALUES(Value1, Value2);

不使用列名的最简单方法将是如下所示

insert into table values (null, col1, col2)

如果您已经将第一列设置为autoincrement,它将很好地工作。

我认为这会工作,我找到了另一个好方法并编辑了问题!非常感谢。这是正确的方法。这也不是特定于SQLite的。如果您正在进行模式迁移,并且使用select语句进行插入,则可以执行
insert into INTERPATIONS(col1,col2)从t1\U备份中选择col1,col2
INSERT INTO TableName (columnName1, columnName2) VALUES(Value1, Value2);
insert into table values (null, col1, col2)