搜索文章

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 报表技术分享 > 快逸报表获取填报更新属性中的sql

快逸报表获取填报更新属性中的sql

背景说明

填报监听类中,怎么获取填报更新的sql。获取到sql后,可以根据需求,做一些比如插入一条数据,更新一条数据等操作。

 

我们看下面一个例子。

 

应用举例

 

 监听类部分代码:

import java.sql.Connection;

import java.sql.Statement;

 

import com.runqian.base4.util.SQLParser;

import com.runqian.report4.usermodel.input.AbstractInputListener;

import com.runqian.report4.usermodel.input.InputSQL;

 

public class TBUserProcess3 extends AbstractInputListener{           

       public void afterSave(){       

              System.out.println(“数据填报处理程序开始执行…….”);         

              String sk,sqlstr,where,str1;

              String[] sks;                

              int j=0;          

 

              InputSQL[] sql = getInputSql();

              System.out.println(“_____________sql:”+sql);

              Connection con = null;

              Statement stmt = null;          

 

              try{              

                     con=context.getConnectionFactory(context.getDefDataSourceName()).getConnection();

                     System.out.println(“填报处理:获得的数据库连接“);                    

                     stmt = con.createStatement();

 

                     for(int i=0;i<sql.length;i++){

                            //开始处理Where子句                     

                            where=” 1=1 “;

                            sk=SQLParser.getClause(sql[i].getSql(),SQLParser.KEY_WHERE);//取得主键的字段

                            //取出where后面的条件

                            System.out.println(“_______________ sk:”+sk);

                            sks=sk.split(“and”);

                            for ( j = 0; j < sks.length; j++) {                                     

                                   where=where + ” and “+sks[j];

                                   System.out.println(“_____________ where:”+where);

                                   System.out.println(“______________sks["+j+"]“+sks[j]);

                            }                         

 

                            //开始处理需要更新的字段信息,sks[j]中为需要更新的字段

                            sk=SQLParser.getClause(sql[i].getSql(),SQLParser.KEY_SET);//取得更新字段

                            System.out.println(“______________更新的字段:“+sk);

                            sks=sk.split(“,”);                        

 

                            for ( j = 0; j < sks.length; j++) {                              

                                   //if (!sks[j].substring(0,sks[j].indexOf(“=”)-1).trim().toUpperCase().equals(“UPDATEDATE”))                    

                                   sks[j]=sks[j].substring(0,sks[j].indexOf(“=”)-1).trim();

                                   System.out.println(“______________sks["+j+"]“+sks[j]);

                            }

 

                            //开始整合SQL语句,将相应的值插入sql的字段中就可以拼成一个sql语句,此处没有插入值。

                            sqlstr=”update “+SQLParser.getClause(sql[i].getSql(),SQLParser.KEY_UPDATE)+” set “;                           

                            sqlstr=sqlstr+sk;                        

 

                            sqlstr=sqlstr+ ” where “+ where;

                            System.out.println(“sqlstr——1:”+sqlstr);                        

                            str1=sqlstr;

 

                            System.out.println(“获取的str1—————:“+str1);

                            stmt.executeUpdate(str1);

                            con.commit();       

 

                     }                  

 

              }catch(Exception e){

                     System.out.println(e.getMessage());           

              }finally {

                     try {

                            if ( con == null ) System.out.println(“没有获得数据库连接!!!“);

                            if ( stmt != null ) stmt.close();

                            if ( con != null ) con.close();

                            System.out.println(“数据填报处理程序执行结束…….”);

                     }catch( Exception e ) {

                            System.out.println(e.getMessage());

                     }

              }           

 

       }

 

}