SELECT * FROM (select t.data_kbn,t.date1,t.text1,t.text5,t.text6,t.setumei,
RANK() OVER (partition by t.data_kbn, t.key2 ORDER BY t.date1 DESC) T
from c_jk_syorijyokyo t where t.data_kbn = 1) TT where tt.T = 1 这句话如何用java实现如何在eclipse执行程序完毕 在执行过程中打出上面这句sql语句
RANK() OVER (partition by t.data_kbn, t.key2 ORDER BY t.date1 DESC) T
from c_jk_syorijyokyo t where t.data_kbn = 1) TT where tt.T = 1 这句话如何用java实现如何在eclipse执行程序完毕 在执行过程中打出上面这句sql语句
你是说打印执行结果吗?import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class OracleOperating{
private final static String DB_URL = "jdbc:oracle:thin:@你的ID:1521:数据库名称";
private final static String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
private final static String DB_USERNAME = "你的用户名";
private final static String DB_PASSWORD = "你的密码";
public Connection getConnection(){
Connection conn = null;
try{
Class.forName(DB_DRIVER);
conn = DriverManager.getConnection(DB_URL,DB_USERNAME,DB_PASSWORD);
}catch(Exception ex){
ex.printStackTrace();
}
return conn;
}
public void closeConnection(Connection conn){
try{
if(conn!=null){
if(!conn.isClosed()){
conn.close();
}
}
}catch(Exception ex){
ex.printStackTrace();
}
}
public void select(String param) throws SQLException{
Connection conn=getConnection();
String sql="SELECT * FROM (select t.data_kbn,t.date1,t.text1,t.text5,t.text6,t.setumei, " +
"RANK() OVER (partition by t.data_kbn, t.key2 ORDER BY t.date1 DESC) T " +
"from c_jk_syorijyokyo t where t.data_kbn = 1) TT where tt.T = 1;";
PreparedStatement pstat=conn.prepareStatement(sql);
ResultSet rs=pstat.executeQuery();
while(rs.next()){
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
.......
}
rs.close();
closeConnection(conn);
}
}
可是框架不一样
我需要的是 public Long getCountbySc(Jk062Form jk062Form) {
return select().where(searchConditon(jk062Form)).getCount();
}
这样的 其中searchConditon 为条件 可以写成一个方法进行调用…… 主要是rank()over这部分没有找到相对的关键字
我理解错误你的意思
你使用的是JDBC,
可以直接使用rank()over
反正他是传到数据库执行的
与JAVA没关系吧
我需要检索的时候执行这句话
但不能像2楼那样做 框架不支持
所以一定要用java语言来实现这句话 之后才能用jdbc来实现
给你个searchCondition里的例子
private SimpleWhere searchConditon(Jk062Form jk062Form) {
return new SimpleWhere().excludesWhitespace()
.contains("setumei",jk062Form.setumei)
.eq("text1", jk062Form.text1)
.eq("date1", jk062Form.date1);
}
这样的……
没啥区别的
oracle 里面的 rank 和 over 是分组统计的函数。java 里面是这样实现的,外面一个大循环所有数据。里面一个循环取根据条件进行分区的,外面一个list,里面根据条件分区,会有n个list,保存到 map里面,key就是条件,value就是统计循环的list.
你的这个和HIBERNATE的Criteria差不多,
你如果真要在JAVA里实现这个分析函数,
你只能去看看人家ORACLE那帮人是怎么写的了不管什么框架,他总能回到最原始的JDBC吧
在不行
写存储过程
int flag = -1;
String sql = "delete employeeManager where employee_id=" + employeeId;
System.out.println(sql); Connection con = DBCon.getConnection(); try {
Statement stm = con.createStatement();
flag = stm.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DBCon.closeConnection(con);
}
return flag;
}这样?