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得到一个异常,告诉我参数没有指定值。吉尔伯特布朗-这正是我试图避免的情况。因为你在准备好的声明中仍然提到。使用不带该参数的单独准备语句,字段名称之间不提及,并且根本不匹配“”。