本帖最后由 leo0235 于 2010-03-13 10:22:30 编辑

解决方案 »

  1.   

     catch (SQLException e) ->  catch (Exception e)
    然后看trace.
      

  2.   

       你的List 都是 null 呢, 。           
      

  3.   

    List list = null;
    try {
    if (con == null || !con.isClosed()) {
    con = getConnection();
    }
    stmt = con.createStatement();
    rs = stmt.executeQuery(sql);
    if (rs != null) {
    list = new ArrayList();
    while (rs.next()) {
    ArrayList temp = new ArrayList();
    System.out.println((String)rs.getObject(1));
    System.out.println((String)rs.getObject(2));
    System.out.println((String)rs.getObject(3));
    System.out.println((Boolean)rs.getObject(4));
    System.out.println((Integer)rs.getObject(5));
    System.out.println((String)rs.getObject(6));
    System.out.println((String)rs.getObject(7));
    System.out.println(rs.getObject(8));
    System.out.println((Integer)rs.getObject(9));
    for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
    temp.add(rs.getObject(i));
    }
    list.add(temp);
    }
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    System.out.println(e.getMessage().toString());
    return null;
    } finally {
    closed();
    测试数据获取正常,但是一进入for循环第一次执行temp.add(rs.getObject(i))则抛出异常 java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]无效的描述符索引
      

  4.   

    不要读取两次吧.改一下看看:if (rs != null) {
                    list = new ArrayList();
                    int count = rs.getMetaData().getColumnCount();
                    while (rs.next()) {
                        ArrayList temp = new ArrayList();
                            for (int i = 1; i <= count; i++) {
                               temp.add(rs.getObject(i));
                            }
                        list.add(temp);
                    }
                }
      

  5.   

    效果没有不同吧,rs.getMetaData().getColumnCount()就一常量,问题就出在temp.add(rs.getObject(i));但就想不通为什么.
      

  6.   

    有的,曾经试过rs.getString同一个字段不能读取两次
      

  7.   

    首先感谢,确实不能读两次.但是后续又出现问题.
    登陆密码错误时,rs应该为空,但是却执行了
    if (rs != null) {
                    list = new ArrayList();
    将list初始化为Arraylist,返回list不为null导致后续代码异常