public Collection executeQuery1(String sql) {
         BaseDao bd = new BaseDao();
         Collection coll = new ArrayList();
         System.out.println(sql);
         try {
             ResultSet rs = bd.executeQuery(sql);
           
             int count = rs.getMetaData().getColumnCount();
             System.out.println(count);
             String[] fields = new String[count];
             for (int i = 0; i < count; i++) {
                 fields[i] = (String) rs.getMetaData().getColumnName(i + 1);
                 System.out.println(fields[i]);
             }
             for (int i = 0; i < count; i++) {
                 HashMap hash = new HashMap();
                 for (int ii = 0; ii < count; ii++) {
                     Object value = null;
                     if ("DATETIME".equals(rs.getMetaData().getColumnTypeName(ii +
                             1).toString())) {
                         value = Tools.toShortTimeString(rs.getString(
                                 fields[ii]));
                     } 
                     else if("INTEGER".equals(rs.getMetaData().getColumnTypeName(ii +
                             1).toString())){
                         value=Integer.parseInt(rs.getString(rs.getInt(fields[ii])));
                     }
                     else if("BIT".equals(rs.getMetaData().getColumnTypeName(ii+1).toString())){
                         value=Boolean.parseBoolean(rs.getString(fields[ii]));
                     }
                     
                     else if("CURRENCY".equals(rs.getMetaData().getColumnTypeName(ii+1).toString())){
                         value=Double.parseDouble(rs.getString(fields[ii]));
                     }
                     else {                      
                         value = rs.getString(fields[ii]);
                     }
                     hash.put(fields[ii], value);
                 }
                 coll.add(hash);
                 System.out.println(i);
                 if (!rs.next()) {
                     break;
                 }
             }
         } catch (Exception ex) {
             System.out.println(ex.toString() + "BaseDb");
         } finally {
             bd.close();
         }
         return coll;
     }
异常:java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态无法理解

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【yanke1014】截止到2008-07-02 15:50:06的历史汇总数据(不包括此帖):
    发帖的总数量:22                       发帖的总分数:1385                     
    结贴的总数量:20                       结贴的总分数:1185                     
    无满意结贴数:2                        无满意结贴分:22                       
    未结的帖子数:2                        未结的总分数:200                      
    结贴的百分比:90.91 %               结分的百分比:85.56 %                  
    无满意结贴率:10.00 %               无满意结分率:1.86  %                  
    值得尊敬
      

  2.   

    尝试使用while来控制循环.相信会有意想不到的效果.
      

  3.   

    顶,来看看啊
    是分 给的少。哎,没注意,加分还要到明天!!##¥%¥#……%¥&%×……(&×(
      

  4.   

    count 是结果集的列数,不是行数,把
    for (int i = 0; i < count; i++)
    改成 
    while (rs.next()) {...}
      

  5.   

    ResultSet rs = bd.executeQuery(sql);
    只看到这里操作数据库了,你的错误是数据库错误。
    是不是sql写的有问题?、