Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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 获取当前_时间戳作为ResultSet的一部分_Java_Sql_Sql Server_Identity_Resultset - Fatal编程技术网

Java 获取当前_时间戳作为ResultSet的一部分

Java 获取当前_时间戳作为ResultSet的一部分,java,sql,sql-server,identity,resultset,Java,Sql,Sql Server,Identity,Resultset,除了标识字段之外,还有其他方法可以在Java中检索数据库生成的值吗?我可以很容易地从ResultSet中获取标识值,但我想获取数据库生成的日期字段的值(当前的时间戳)。我不希望发送另一个SELECT查询来获取日期 statement = connection.prepareStatement("INSERT INTO foo (bar_date) VALUES (CURRENT_TIMESTAMP)"); ResultSet generatedKey = statement.getGenerat

除了标识字段之外,还有其他方法可以在Java中检索数据库生成的值吗?我可以很容易地从ResultSet中获取标识值,但我想获取数据库生成的日期字段的值(当前的时间戳)。我不希望发送另一个SELECT查询来获取日期

statement = connection.prepareStatement("INSERT INTO foo (bar_date) VALUES (CURRENT_TIMESTAMP)");
ResultSet generatedKey = statement.getGeneratedKeys();
while (generatedKey.next()) {
  // read the key..., this unfortunately only returns IDENTITY columns.
}

你试过类似的东西吗

INSERT INTO foo (bar_date) 
OUTPUT INSERTED.bar_date
VALUES (CURRENT_TIMESTAMP)

查看一下

假设您使用的是SQL 2005或更高版本,您可以在insert语句中添加一个
输出
子句,使其返回一个结果集

我不确定检索resultset的Java语法,但它类似于以下内容:

statement = connection.prepareStatement("INSERT INTO foo OUTPUT inserted.id, inserted.bar_date (bar_date) VALUES (CURRENT_TIMESTAMP)"); //guessing the name of the id column
ResultSet returnSet = statement.execute(); // or however you do this
while (resultset.next()) {
  // resultset will have two columns - id and bar_date
}

太好了,很好用。我假设没有独立于数据库的方法来实现这一点。。。(例如,Postgres也实现了这一功能。在2005年之前的MSSQL中,或者在sqlite中,都没有相应的版本。最具可移植性的方法是将逻辑封装在一个存储过程中,该存储过程返回一个结果集(或输出参数)——但这不会与数据库无关,因为每个RDBMS中的SP实现不同。再次感谢。我会考虑的。谢谢,这正是我一直在寻找的。