环境sqlserver2005
JdbcTemplate调用存储过程 execute()执行返回false?导致返回ResultSet为空
在sqlserver2000是可以使用的package com.dagongDB.dao.impl;import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.CallableStatementCallback;import com.dagongDB.dao.IBaseGridDAO;
public class BaseGridDAOImpl extends BaseDAOImpl implements IBaseGridDAO { public Collection hongGuanGrid(String sTime,String eTime,String str) {
// TODO Auto-generated method stub
Object obj = null;
try {
str = str.replaceAll("@", ",");
String[] as = str.split(",");
final int aslength = as.length;
System.out.println(str + "=====");
final String callString = "{call rowToCol(?)}";
final String sqlParam = "SELECT ss.TongJiRQ,sz.ZhiBiaoMC,ss.ZhiBiaoZ into temp_rowToCol FROM TbHongGuanZBSS ss,TbHongGuanZBSZ sz WHERE ss.TongJiRQ >= " + sTime + " AND ss.TongJiRQ <= " + eTime + " AND ss.ZhiBiaoBM IN (SELECT CengCiM FROM TbFenLeiJD WHERE JieDianBH IN(" + str + ")) AND ss.ZhiBiaoBM = sz.BianMa";
System.out.println(sqlParam);
obj = getJdbcTemplate().execute(callString, new CallableStatementCallback(){
public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
ResultSet rs = null;
cs.setString(1, sqlParam);
List te = new ArrayList();
// rs = (ResultSet)cs.executeQuery();//sqlserver2000 可以使用此方法
// boolean b = cs.execute(sqlParam);
boolean bl = cs.execute();//返回false,怎么解决啊
rs = cs.getResultSet();
System.out.println("77777777=" + rs + " cs.execute()=" + bl);
int lg = aslength + 1;
while(rs.next())
{
// System.out.println(rs.getInt(1)+rs.getString(2));
}
if(cs.getMoreResults())
{
rs = cs.getResultSet();
while (rs.next()) {
System.out.println(rs.getInt(1) + "-" + rs.getBigDecimal(2) + "-" + rs.getBigDecimal(3));
String[] arr = new String[lg];
int m = 0;
arr[m] = rs.getInt(1) + "";
m = m + 1;
for(int i=m;i<lg;i++){
// if(i%2 == 1){
// arr[i] = rs.getString(i + 1) + "";
// }else
arr[i] = rs.getBigDecimal(i + 1) + "";
}
te.add(arr);
}
}
return te;
}
});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List lt = (ArrayList)obj;
// if(lt != null && lt.size() != 0){
// for(int n=0;n<lt.size();n++){
// String[] arrs = (String[])lt.get(n);
// for(int k=0;k<arrs.length;k++){
// System.out.print(arrs[k] + "-");
// }
// System.out.println("--------------------------");
// }
// }
return lt;
} public BaseGridDAOImpl() {
super();
// TODO Auto-generated constructor stub
}
}
JdbcTemplate调用存储过程 execute()执行返回false?导致返回ResultSet为空
在sqlserver2000是可以使用的package com.dagongDB.dao.impl;import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.CallableStatementCallback;import com.dagongDB.dao.IBaseGridDAO;
public class BaseGridDAOImpl extends BaseDAOImpl implements IBaseGridDAO { public Collection hongGuanGrid(String sTime,String eTime,String str) {
// TODO Auto-generated method stub
Object obj = null;
try {
str = str.replaceAll("@", ",");
String[] as = str.split(",");
final int aslength = as.length;
System.out.println(str + "=====");
final String callString = "{call rowToCol(?)}";
final String sqlParam = "SELECT ss.TongJiRQ,sz.ZhiBiaoMC,ss.ZhiBiaoZ into temp_rowToCol FROM TbHongGuanZBSS ss,TbHongGuanZBSZ sz WHERE ss.TongJiRQ >= " + sTime + " AND ss.TongJiRQ <= " + eTime + " AND ss.ZhiBiaoBM IN (SELECT CengCiM FROM TbFenLeiJD WHERE JieDianBH IN(" + str + ")) AND ss.ZhiBiaoBM = sz.BianMa";
System.out.println(sqlParam);
obj = getJdbcTemplate().execute(callString, new CallableStatementCallback(){
public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
ResultSet rs = null;
cs.setString(1, sqlParam);
List te = new ArrayList();
// rs = (ResultSet)cs.executeQuery();//sqlserver2000 可以使用此方法
// boolean b = cs.execute(sqlParam);
boolean bl = cs.execute();//返回false,怎么解决啊
rs = cs.getResultSet();
System.out.println("77777777=" + rs + " cs.execute()=" + bl);
int lg = aslength + 1;
while(rs.next())
{
// System.out.println(rs.getInt(1)+rs.getString(2));
}
if(cs.getMoreResults())
{
rs = cs.getResultSet();
while (rs.next()) {
System.out.println(rs.getInt(1) + "-" + rs.getBigDecimal(2) + "-" + rs.getBigDecimal(3));
String[] arr = new String[lg];
int m = 0;
arr[m] = rs.getInt(1) + "";
m = m + 1;
for(int i=m;i<lg;i++){
// if(i%2 == 1){
// arr[i] = rs.getString(i + 1) + "";
// }else
arr[i] = rs.getBigDecimal(i + 1) + "";
}
te.add(arr);
}
}
return te;
}
});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List lt = (ArrayList)obj;
// if(lt != null && lt.size() != 0){
// for(int n=0;n<lt.size();n++){
// String[] arrs = (String[])lt.get(n);
// for(int k=0;k<arrs.length;k++){
// System.out.print(arrs[k] + "-");
// }
// System.out.println("--------------------------");
// }
// }
return lt;
} public BaseGridDAOImpl() {
super();
// TODO Auto-generated constructor stub
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货