sql在java里如何实现(在线等答案)

d1984 2009-11-16 01:54:35
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语句
...全文
132 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zl3450341 2009-11-16
  • 打赏
  • 举报
回复
public int deteteEmployeeById(String employeeId) {
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;
}


这样?
bunrise 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 d1984 的回复:]
引用 5 楼 lxd520123 的回复:
引用 4 楼 lxd520123 的回复:
建议你去看看ORACLER分析函数源代码


我理解错误你的意思
你使用的是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);
}
这样的……
[/Quote]

你的这个和HIBERNATE的Criteria差不多,
你如果真要在JAVA里实现这个分析函数,
你只能去看看人家ORACLE那帮人是怎么写的了

不管什么框架,他总能回到最原始的JDBC吧
在不行
写存储过程

youjianbo_han_87 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 d1984 的回复:]


不是这种的……  虽然数据库也是oracle
可是框架不一样
我需要的是    public Long getCountbySc(Jk062Form jk062Form) {
        return select().where(searchConditon(jk062Form)).getCount();
    }
这样的  其中searchConditon  为条件  可以写成一个方法进行调用……  主要是rank()over这部分没有找到相对的关键字
[/Quote]

oracle 里面的 rank 和 over 是分组统计的函数。

java 里面是这样实现的,外面一个大循环所有数据。里面一个循环取根据条件进行分区的,外面一个list,里面根据条件分区,会有n个list,保存到 map里面,key就是条件,value就是统计循环的list.
caryyu 2009-11-16
  • 打赏
  • 举报
回复
跟调用其他sql语句一样
没啥区别的
d1984 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lxd520123 的回复:]
引用 4 楼 lxd520123 的回复:
建议你去看看ORACLER分析函数源代码


我理解错误你的意思
你使用的是JDBC,
可以直接使用rank()over
反正他是传到数据库执行的
与JAVA没关系吧


[/Quote]
虽然是传到数据库中的 可是 也要有对应的方法进行匹配啊
我需要检索的时候执行这句话
但不能像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);
}
这样的……
bunrise 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lxd520123 的回复:]
建议你去看看ORACLER分析函数源代码
[/Quote]

我理解错误你的意思
你使用的是JDBC,
可以直接使用rank()over
反正他是传到数据库执行的
与JAVA没关系吧

bunrise 2009-11-16
  • 打赏
  • 举报
回复
建议你去看看ORACLER分析函数源代码
d1984 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 closewbq 的回复:]
数据库是什么?按照oracle为例吧!
你是说打印执行结果吗?
Java codeimport java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;publicclass OracleOperating{privatefinalstatic String DB_URL="jdbc:oracle:thin:@你的ID:1521:数据库名称";privatefinalstatic String DB_DRIVER="oracle.jdbc.driver.OracleDriver";privatefinalstatic String DB_USERNAME="你的用户名";privatefinalstatic 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;
}publicvoid closeConnection(Connection conn){try{if(conn!=null){if(!conn.isClosed()){
conn.close();
}
}
}catch(Exception ex){
ex.printStackTrace();
}
}publicvoid 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);
}

}

[/Quote]
不是这种的…… 虽然数据库也是oracle
可是框架不一样
我需要的是 public Long getCountbySc(Jk062Form jk062Form) {
return select().where(searchConditon(jk062Form)).getCount();
}
这样的 其中searchConditon 为条件 可以写成一个方法进行调用…… 主要是rank()over这部分没有找到相对的关键字
closewbq 2009-11-16
  • 打赏
  • 举报
回复
数据库是什么?按照oracle为例吧!
你是说打印执行结果吗?

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);
}

}

d1984 2009-11-16
  • 打赏
  • 举报
回复
自己给顶起来 别沉了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧