while (rec.next()){
                file.write(rec.getString(++i)); }有问题,对每条记录只能输出一个字段的值,第二个问题是由于有三条记录,但只有二个字段,所以在第三条记录时出错,因为只有二个字段。
            

解决方案 »

  1.   

    rec.getString(++i).getBytes()是根据i值写每一个字段(i=1是第一个字段)
    当表里只有两条记录十还是有SQL Error:java.sql.Exception:[Microsoft][ODBC SQL Server driver]无效的描述符号  0 s1002
      

  2.   

    ...
    while (rec.next()){
         file.write(rec.getString(1)); 
         file.write(rec.getString(2));
                     
    }
    ...
    i没有用
      

  3.   

     hzm1029(老农)的说法很对,此处代码中定义数据集为滚动不敏感型,那么每一条记录的各个字段可以用rec.getString(1)这种方式取数据,但为了准确、便捷的取出数据,最好使用rec.getString(fieldName1)这种形式(因为一般字段名已知,并且表的结构一般情况下不会变动),代码中的取数据的方式是不规范的,简单如下:
    try{
      while (rec.next()){
        file.write(rec.getString(fieldName1)); 
        file.write(rec.getString(fieldName2));
        ......            
      }
    }catch(Exception e){
      e.....;
    }
      

  4.   

    “数据级是滚动不敏感型”是什么意思,这是在哪定义的?while循环中i为什么没有起到作用?还请指教,谢谢!
      

  5.   


    滚动不敏感型的数据集的光标可以以任意顺序访问该条数据的任一字段的内容,滚动敏感型(默认)则只能顺序访问,不能访问了filenName2之后再访问fileName1,滚动不敏感型连接的示例如下,
    try{
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          conn = DriverManager.getConnection("jdbc:odbc:" +  aOdbcSource,aUserID,aPassword);
          st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
        }catch(Exception e) {
          System.out.println(e.toString());
        }
    重点在st=。。那一句上,你可以试一下,看看前面说的是不是有错误,我记得也不是很清楚了。