oracle

纠结了几天的问题终于得到解决了,就是java通过jdbc连接oracle数据库进行日期查询。一下代码,是本人亲自检验的,可以使用。
private String translate(String idValue) {
System.out.println("idValue is ***************:"+idValue);
String name = null;

if (idValue == null || idValue.equalsIgnoreCase("null"))
return "";

HashMap dicMap = (HashMap) pageContext.getRequest().getAttribute(tableName);
if (dicMap == null) {
dicMap = new HashMap();
pageContext.getRequest().setAttribute(tableName, dicMap);
} else {
name = (String) dicMap.get(idCol+idValue+nameCol);
if (name != null)
{
return name; // 从map中已经找到了就直接返回
}

}

/** *********进入数据库查询********** */
EOSParameter param = new EOSParameter();
param.setAppID(EOSAppConfiguration.getDefaultAppID());
param.setUnitName("WriteTag");
param.setUnitId("0");
Statement stmt = null;
ResultSet rs = null;
String sql;
try {
Connection conn = param.getDBBroker().getConnection();
//判断如果idValue参数输入的是字符串形式的日期,如:2012-12-21(太阳直射南纬23度)
//则将其通过oracle数据库的函数to_date转化为oracle能够识别的日期格式。
if(idValue.indexOf("-")>0)
{
/*
sql = "select '" + nameCol + "' from '" + tableName
+ "' where '" + idCol+"'='"+to_date(idValue,"yyyy-mm-dd")"'";
System.out.println("sql is .............:"+sql);

*/
/*
List list = new ArrayList();
int i = idValue.indexOf("-");
String s1 = idValue.substring(0,i-1);
list.add(s1);
int j = s1.indexOf("-");
String s2 = s1.substring(i,j-1);
list.add(s2);
String s3 = s1.substring(j,s2.length());
list.add(s3);


sql="select "+nameCol+" from "+tableName+" where "+idCol+" = ?1";
System.out.println("sql is :"+sql);
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setDate(1, new java.sql.Date(Integer.parseInt(s1),Integer.parseInt(s2),Integer.parseInt(s3)));
*/
sql = "select " + nameCol + " from " + tableName
+ " where " + idCol + "= "+"to_date('"+idValue+"','yyyy-MM-dd')";
/*
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "to_date('"+idValue+"','yyyy-MM-dd')");
System.out.println("sql is :"+sql);
System.out.println("date is :"+"to_date('"+idValue+"','yyyy-mm-dd')");
rs = pstmt.executeQuery();
*/
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
else{
sql = "select " + nameCol + " from " + tableName
+ " where " + idCol + "='" + idValue + "'";
// System.out.println(sql);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}

if (rs.next()) {
name = rs.getString(1);
}


} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs == null)
rs.close();
if (stmt == null)
stmt.close();
param.closeDB();
} catch (Exception e1) {
e1.printStackTrace();
}


}

if(name==null) name="";

dicMap.put(idCol+idValue+nameCol, name);


return name;




}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值