检索sql日期并存储在需要localDate的java对象中
我必须从oracle数据库中检索一个日期,并将其作为localDate存储到java对象中。这是我尝试过的代码:检索sql日期并存储在需要localDate的java对象中,java,sql,date,jdbc,localdate,Java,Sql,Date,Jdbc,Localdate,我必须从oracle数据库中检索一个日期,并将其作为localDate存储到java对象中。这是我尝试过的代码: public Sample findSampleById(Integer sampleId) { // TODO Auto-generated method stub PreparedStatement pStmt = null; ResultSet rs = null; Sample sample = new Sample(); String
public Sample findSampleById(Integer sampleId) {
// TODO Auto-generated method stub
PreparedStatement pStmt = null;
ResultSet rs = null;
Sample sample = new Sample();
String sql = "select * from sample where sampleid =" + sampleId;
try {
pStmt = getConnection().prepareStatement(sql);
rs = pStmt.executeQuery();
while(rs.next()) {
sample.setSampleId(rs.getInt("sampleid"));
sample.setSampleKindId(rs.getInt("samplekindid"));
sample.setExpirationDate(rs.getDate("expirationdate").toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
}
} catch (SQLException e) {
throw new DataException(e);
}
return sample;
}
而不是这个sample.setExpirationDate(rs.getDate(“expirationdate”).toInstant().atZone(ZoneId.systemDefault()).toLocalDate())代码>
我也试过这个
检索到的java.sql.Date=java.sql.Date.valueOf(rs.getString(“expirationDate”);sample.setExpirationDate(检索到的.Date())代码>
Sample是一个具有int-sampleId、int-sampleKindId和localdateexpirationdate的类
我对该方法的JUnit测试在我请求过期日期的行中告诉我,它抛出了一个异常。转换是否出错?方法,在接口java.sql.ResultSet
中,返回java.sql.Date
的实例
您只需要对methodgetDate
返回的值调用method
我没有您的数据库,所以我只是尝试从Oracle中的双数据库表中选择SYSDATE。下面的代码运行良好
导入java.sql.Connection;
导入java.sql.Date;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.Statement;
导入java.time.LocalDate;
公共类JdbcTest{
公共静态void main(字符串[]args){
String url=“jdbc:oracle:thin:…”;//替换为适当的url
try(连接conn=DriverManager.getConnection(url);
语句s=conn.createStatement();
ResultSet rs=s.executeQuery(“从双变量中选择sysdate”)){
如果(rs.next()){
日期sysdate=rs.getDate(1);
LocalDate ld=sysdate.toLocalDate();
System.out.println(“LocalDate:+ld”);
System.out.println(“sysdate:+sysdate”);
}
}
捕获(异常x){
x、 printStackTrace();
}
}
}
请参阅这是否回答了您的问题?如果您有一个兼容JDBC 4.2的驱动程序,那么使用rs.getObject(“expirationDate”,LocalDate.class)
就足够了。你试过了吗?