纠结了几天的问题终于得到解决了,就是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;
}
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;
}