sqljep的使用,例子

sqljep的简单使用;
·下载sqljep
http://sqljep.sourceforge.net/

SQLJEP 是一个用来解析和仿真执行SQL语句的Java类库;通俗点解释就是sql语句的过滤条件,用java类实现;
我这里写两个简单的例子给大家看下;

sql语句如下:
create table test (id integer(10) not null auto_increment, sum integer(10) , SALE_DATE TIMESTAMP , primary key(id));
insert into test (sum, SALE_DATE) value (101,now());
insert into test (sum, SALE_DATE) value (102,now());
insert into test (sum, SALE_DATE) value (99,now());
insert into test (sum, SALE_DATE) value (100,now());


对sql执行的结果集判断

//jdbc执行得到的结果集
ResultSet rs = stmt.executeQuery("SELECT ID,SUM,SALE_DATE from test");
//对结果集增加的过滤条件,也可以理解为对 上面sql增加的where条件
ResultSetJEP sqljep2 = new ResultSetJEP("ID in (1,2,3) and SUM>100 and SALE_DATE>(to_date('2011-02-03','yyyy-mm-dd')-7)" );
try {
//对rs这个结果集按照sqljep条件判断
sqljep2.parseExpression(rs);
while (rs.next()) {
//打印将对应的结果集判断的结果
System.out.println(sqljep2.getValue());
}
}
catch (ParseException e) {
e.printStackTrace();
}


控制台结果:
true
true
false
false


对Comparable[]的结果集判断

Comparable[] row1 = {1,101,new java.sql.Timestamp(System.currentTimeMillis())};
Comparable[] row2 = {2,102,new java.sql.Timestamp(System.currentTimeMillis())};
Comparable[] row3 = {3,99,new java.sql.Timestamp(System.currentTimeMillis())};
Comparable[] row4 = {4,100,new java.sql.Timestamp(System.currentTimeMillis())};
//初始数据
Object[] arrComp = new Object[]{row1,row2,row3,row4};
//对判断的数组设置名称
HashMap<String,Integer> columnMapping = new HashMap<String,Integer>();
columnMapping.put("ID",0);
columnMapping.put("SUM",1);
columnMapping.put("SALE_DATE",2);
//对Comparable[]增加的过滤条件
RowJEP sqljep = new RowJEP("ID in (1,2,3) and SUM>100 and trunc(SALE_DATE) < to_date('2012-04-03','yyyy-mm-dd') ");

try {
//对columnMapping按照sqljep条件判断
sqljep.parseExpression(columnMapping);
for(Object com : arrComp)
{
Comparable[] row = (Comparable[]) (com) ;
//打印将对应的row判断的结果
System.out.println(sqljep.getValue(row));
}
}
catch (ParseException e) {
e.printStackTrace();
}


控制台结果:
true
true
false
false


下面这段代码是官方给出的代码;其实是有问题的;

ResultSet rs = statement.excute("SELECT ID,SUM,SALE_DATE from test");
ResultSetJEP sqljep = new ResultSetJEP("ID in (1,2,3) and SUM>100 and SALE_DATE>trunc(sysdate)-7");
try {
sqljep.addConstant("sysdate", new java.util.Date());
sqljep.parseExpression(rs);
whille (rs.next()) {
System.out.println(sqljep.getValue());
}
}
catch (ParseException e) {
e.printStackTrace();
}


上面两个例子都是我测试通过的;
我这里还是说明下,我这里跑官方给出的例子是有bug的;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值