Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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 是否有类似preparedStatement.setDefault()的内容?_Java_Sql_Postgresql_Jdbc - Fatal编程技术网

Java 是否有类似preparedStatement.setDefault()的内容?

Java 是否有类似preparedStatement.setDefault()的内容?,java,sql,postgresql,jdbc,Java,Sql,Postgresql,Jdbc,如果我有这样的陈述: INSERT INTO foo (id, name, description, etc_a, etc_b) VALUES (?, ?, ?, ?, ?); 它被传递到PreparedStatement中。有时我想指定一个id,有时我想使用数据库的默认值作为id,这是下一个未使用的id值 是否有一种方法可以告诉PreparedStatement(PS)对其中一个值使用DEFAULT,而不让第二个PS用DEFAULT代替第一个? 我正在使用PostgreSQL。不幸的是,Pg

如果我有这样的陈述:

INSERT INTO foo (id, name, description, etc_a, etc_b)
VALUES (?, ?, ?, ?, ?);
它被传递到
PreparedStatement
中。有时我想指定一个id,有时我想使用数据库的
默认值
作为id,这是下一个未使用的id值

是否有一种方法可以告诉
PreparedStatement
(PS)对其中一个值使用
DEFAULT
,而不让第二个PS用
DEFAULT
代替第一个


我正在使用PostgreSQL。

不幸的是,PgJDBC目前并没有实现您想要的功能。您必须使用文字
默认值
关键字。没有办法用参数来做


正在开发一个改进来修复这个问题,希望很快能将其发布到PgJDBC版本中。然后,您将能够使用带有特殊占位符实例的
setObject(…)
,以指示您想要的
默认值是错误的。如果该列允许为NULL,则它们将为NULL而不是默认值。如果列不允许为Null,则在执行PS时将引发异常。不要传递该特定参数。最坏的情况是,设置2个PreparedStatements。一个有id,就像你的问题一样,一个没有id。没有id的插入应该使用id的默认值。@DanBracuk-已经尝试过了。我从PS得到一个异常,告诉我参数没有指定值。吉尔伯特布朗-这正是我试图避免的情况。因为你在准备好的声明中仍然提到。使用不带该参数的单独准备语句,字段名称之间不提及,并且根本不匹配“”。