获取日期差异的 return 值?
Get the return value of date diff?
所以我在 MS SQL 服务器上使用 DATEDIFF
函数进行查询?
SELECT DATEDIFF(DAY,(select StartDate from CarOrder where OrderID= 59),(select EndDate from CarOrder where OrderID= 59))
这个工作正常,结果是 10,但我不知道如何获取 return 值并在此函数中使用它 java
public int getDateDiff(int OrderID){
Connection conn = DBConnection.getConnection();
int datediff;
String getdiffSQL = "SELECT DATEDIFF(DAY,(select StartDate from CarOrder where OrderID = ? ) ,(select EndDate from CarOrder where OrderID= ?) )";
try {
PreparedStatement pstm = conn.prepareStatement(getdiffSQL);
pstm.setInt(1, OrderID);
pstm.setInt(2, OrderID);
int nRows = pstm.executeUpdate();
return nRows;
} catch (SQLException ex) {
System.out.println("Error: " + ex.getMessage());
} finally {
DBConnection.closeConnection(conn);
}
}
我希望它成为 return 日期差异编号,以便它成为我可以在 java 中使用的变量,我该怎么做?
谢谢。
将查询结果存储在 ResultSet 对象中,然后使用 {YOUR_RESULT_SET}.getYourDataType(columnNumber).
选择适当列的值
使用ResultSet
您需要捕获 ResultSet
,并访问 ResultSet
的行(在本例中为单行)。如果您正在执行查询,请在 PreparedStatement
上调用 executeQuery
,从而生成 ResultSet
.
使用现代 try-with-resources 语法自动关闭您的数据库资源。您可以删除 finally
子句;无需在您的数据库资源上调用 closeXXX
,因为该杂务已为您处理。
我没有尝试执行以下代码示例,但我希望它接近您的需要。我正在使用 Martin Smith 评论中建议的备用 SELECT
行;我没有考虑这个,因为它不是你问题的核心。
String sql = "SELECT DATEDIFF( DAY , StartDate , EndDate ) FROM CarOrder WHERE OrderID = ? ;" ;
Integer diff = null ;
try (
Connection conn = myDataSource.getConnection() ;
PreparedStatement pstmt = conn.prepareStatement ( sql ) ;
) {
pstmt.setInt( 1 , orderId ) ;
try (
ResultSet rs = pstmt.executeQuery( sql ) ;
) {
while ( rs.next ( ) ) {
diff = rs.getInt( 1 ) ; // Auto-boxing `int` to `Integer`.
}
}
}
} catch ( SQLException e ) {
e.printStackTrace ( ); // Handle error condition however you see fit.
}
if( null == diff ) {
System.out.println( "mission failed." ) ;
} else {
System.out.println( "mission succeeded. Diff is: " + diff ) ;
}
对于实际工作,我还会进行测试以确保只返回一行(确保 while
循环恰好运行一次而不是零次或多次)。
如果您对各种数据库资源(DataSource、Connection、PreparedStatement、ResultSet)不清楚,您应该放下 IDE and do some more study of the Oracle Tutorial on JDBC matters,然后在 Stack Overflow 上做一些 searching/studying主题。
所以我在 MS SQL 服务器上使用 DATEDIFF
函数进行查询?
SELECT DATEDIFF(DAY,(select StartDate from CarOrder where OrderID= 59),(select EndDate from CarOrder where OrderID= 59))
这个工作正常,结果是 10,但我不知道如何获取 return 值并在此函数中使用它 java
public int getDateDiff(int OrderID){
Connection conn = DBConnection.getConnection();
int datediff;
String getdiffSQL = "SELECT DATEDIFF(DAY,(select StartDate from CarOrder where OrderID = ? ) ,(select EndDate from CarOrder where OrderID= ?) )";
try {
PreparedStatement pstm = conn.prepareStatement(getdiffSQL);
pstm.setInt(1, OrderID);
pstm.setInt(2, OrderID);
int nRows = pstm.executeUpdate();
return nRows;
} catch (SQLException ex) {
System.out.println("Error: " + ex.getMessage());
} finally {
DBConnection.closeConnection(conn);
}
}
我希望它成为 return 日期差异编号,以便它成为我可以在 java 中使用的变量,我该怎么做? 谢谢。
将查询结果存储在 ResultSet 对象中,然后使用 {YOUR_RESULT_SET}.getYourDataType(columnNumber).
选择适当列的值使用ResultSet
您需要捕获 ResultSet
,并访问 ResultSet
的行(在本例中为单行)。如果您正在执行查询,请在 PreparedStatement
上调用 executeQuery
,从而生成 ResultSet
.
使用现代 try-with-resources 语法自动关闭您的数据库资源。您可以删除 finally
子句;无需在您的数据库资源上调用 closeXXX
,因为该杂务已为您处理。
我没有尝试执行以下代码示例,但我希望它接近您的需要。我正在使用 Martin Smith 评论中建议的备用 SELECT
行;我没有考虑这个,因为它不是你问题的核心。
String sql = "SELECT DATEDIFF( DAY , StartDate , EndDate ) FROM CarOrder WHERE OrderID = ? ;" ;
Integer diff = null ;
try (
Connection conn = myDataSource.getConnection() ;
PreparedStatement pstmt = conn.prepareStatement ( sql ) ;
) {
pstmt.setInt( 1 , orderId ) ;
try (
ResultSet rs = pstmt.executeQuery( sql ) ;
) {
while ( rs.next ( ) ) {
diff = rs.getInt( 1 ) ; // Auto-boxing `int` to `Integer`.
}
}
}
} catch ( SQLException e ) {
e.printStackTrace ( ); // Handle error condition however you see fit.
}
if( null == diff ) {
System.out.println( "mission failed." ) ;
} else {
System.out.println( "mission succeeded. Diff is: " + diff ) ;
}
对于实际工作,我还会进行测试以确保只返回一行(确保 while
循环恰好运行一次而不是零次或多次)。
如果您对各种数据库资源(DataSource、Connection、PreparedStatement、ResultSet)不清楚,您应该放下 IDE and do some more study of the Oracle Tutorial on JDBC matters,然后在 Stack Overflow 上做一些 searching/studying主题。