后台传过来的sql=if exists (select name from  sysindexes where  id= object_id('Dict_CostCenter')) execute master.dbo.sp_helpindex Dict_CostCenter public static Map<String, Object> getStoredTwo(String sql) throws SQLException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
Map<String, Object> rsMap = new HashMap<String, Object>();
try {
conn = getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(sql);//报这行空指针
if (null != rs) {
rs = stmt.getResultSet();
rsMap.put("primaryKey", rs);
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// rs.close();
// stmt.close();
if (conn != null) {
conn.close();
}
}
return rsMap;
}我的问题是 因为表是不固定的,所以有的时候sql查出的数据可能为空,当为空时,只要走到stmt.executeQuery(sql)这,就已经报空了,怎么解决这个问题,它根本不会走下面的判断  各位大神帮帮我 虽然是小毛病

解决方案 »

  1.   

    对stmt加一个空值的判断不就行了吗?
    if(stmt = null){
    returen。}
    rs = stmt.executeQuery(sql);//报这行空指针
      

  2.   

    stmt 是肯定有的 只是executeQuery(sql)这个方法查不出数据就直接空指针了    
    master.dbo.sp_helpindex Dict_CostCenter  这个存储过程如果什么都查不出的话连字段名都没有 
    只有下面提示一句 object do not have any indexs
      

  3.   


    那时SQL语句报错。
    那你在这里try catch一下不就行了吗?
    捕获异常表明是零件,返回一个空的map。
      

  4.   

    我想问题应该在存储过程 查询  object do not have any indexs  这, 因为一般即使查询不出数据,表里也会有字段名的 只是字段值为空