本类的属性是通过依赖注入完成的(由spring管理)
public boolean GET_BYQ_LIST(UeiByq entity) throws Exception {
/**
* 数据库连接
*/
Connection sybaseConn = null;
/**
* CallableStatement 它的父类:PreparedStatement-->Statement
*/
CallableStatement cs = null;
/**
* 结果集
*/
ResultSet rs = null;
try {
sybaseConn = this.KMRPM.getSybDS().getConnection(); //获得Connection--数据库连接对象
/**
* 创建statement 红色的问号表示返回的结果集(必须注册参数类型为out类型);黄色的表示传入的in类型参数
*/
cs = sybaseConn.prepareCall("{? = call PKG_MRS.GET_BYQ_LIST(?,?,?,?,?)}");
// 注册输出对象 (必须注册参数类型为out类型)
int n_Index = 1;
cs.registerOutParameter(n_Index++, OracleTypes.CURSOR);
// 设置存储过程参数
cs.setString(n_Index++, entity.getKHMC());设值的时候,实体类属性的类型要使用对应于数据库中的类型的方法
cs.setString(n_Index++, entity.getKHBH());
cs.setString(n_Index++, null);
cs.setString(n_Index++, null);
cs.setString(n_Index++, null);
// 执行
cs.execute();
/**
* rs = ((OracleCallableStatement) stmt).getCursor(1);
* 此写如果用数据源连接方式,发会报stmt转化为OracleCallableStatement java.lang.ClassCastException异常
* 如果直连是没有问题的
*/
//取回结果集
rs = (ResultSet)cs.getObject(1);
importByq(null,rs);
return true;
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
/**
* 释放资源
*/
ConnectionFactory.releaseConnection(sybaseConn, cs, rs);
}
}
private int importByq(WebApplicationContext springContext,ResultSet sybaseRs){
//定义 存放sql语句的 StringBuffer
StringBuffer sbSQL = null ;
//定义 PreparedStatement
PreparedStatement ps = null ;
PreparedStatement delPs = null ;
//定义数据库连接
Connection conn = null ;
int count = 0;
try {
conn = KMRPM.getOraDS().getConnection();
//拼写sql
sbSQL = new StringBuffer();
sbSQL.append( "INSERT INTO UEI_BYQ " );
sbSQL.append( "(KHBH,KHMC,BH,MC) " );
sbSQL.append( "VALUES " );
sbSQL.append( "(?,?,?,?)" );
/**
* 获取连接 不能使用自动提交机制;因为下面是批量插入
*/
conn.setAutoCommit(true);
/**
* 删除旧数据 UEI_BYQ 相当于一个临时表,专门用来存储按照客户输入的条件统计出来的数据
*/
delPs = conn.prepareStatement("DELETE UEI_BYQ ");
delPs.executeUpdate();
/**
* 导入新数据
*/
//获取数据库PrepatedStatement
ps = conn.prepareStatement( sbSQL.toString() );
/**
* 循环SYBASE RS导数据
*/
while (sybaseRs.next()) {
count++;
//给sql语句赋值
//定义增量参数变量
try{
int nIndex = 1 ;
ps.setString( nIndex++ , sybaseRs.getString("KHBH") ==null?"":sybaseRs.getString("KHBH").trim());
ps.setString( nIndex++ , sybaseRs.getString("KHMC") ==null?"":sybaseRs.getString("KHMC").trim());
ps.setString( nIndex++ , sybaseRs.getString("BH") ==null?"":sybaseRs.getString("BH").trim());
ps.setString( nIndex++ , sybaseRs.getString("MC")==null?"":sybaseRs.getString("MC").trim());
ps.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 提交事务
*/
conn.commit();
} catch (Exception e) {
e.printStackTrace();
try {
} catch (Exception ie) {
ie.printStackTrace();
}
}finally{
/**
* 释放资源
*/
ConnectionFactory.releaseConnection(conn,ps,null);
ConnectionFactory.releaseConnection(conn,delPs,null);
}
return count;
}