count += rs.getInt(3);
output += rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\n";
第一句是干吗用的?
文本型的用getString()

解决方案 »

  1.   

    rs.getInt(3);rs.getString(3)
    对(3)不能get两次。
      

  2.   

    count += rs.getInt(3);
    output += rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\n";
    改成
      output += rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\n";
    count += rs.getInt(3);
    试试。
      

  3.   

    import java.sql.*;public class NorthwindSQLServerODBCDemo {
      public static void main(String[] args) throws Exception {
        //更新数据库的名字,便可以建立对SQLServer的联接
        String url = "jdbc:odbc:bookshopdatabase";
        Connection conn;
        String output = new String();
        int count = 0;
                     //建立连接类
        try{
          //告诉程序使用jdbc与odbc桥创建数据库联接
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          System.out.println("JDBC-ODBC的驱动程序注册成功");
        }catch(Exception e){
          System.out.println("找不到JDBC-ODBC的驱动程序");
        }
        try{
          //使用DriverManager类的getConnection()方法建立联接,第一个字符参数定义用户名,
          //第二个字符参数定义密码
          conn = DriverManager.getConnection(url, "sa", "1982101");
          Statement stmt = conn.createStatement();
          ResultSet rs = stmt.executeQuery("select * from book");
          while(rs.next()){
            //数据库表book的第三个字段是书的价格,count是取得每一本书的价格总和
    count += rs.getInt(3);
    output += rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\n";
          }
          System.out.println(count);
          System.out.println(output);
        }catch(Exception e){
    e.printStackTrace();
        }
      }
    }以上代码能通过编译,运行是发生了异常:
    java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]无效的描述符索引
            at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
            at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
            at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3908)
            at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java
    5702)
            at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:356        at NorthwindSQLServerODBCDemo.main(NorthwindSQLServerODBCDemo.java:26)    但是如果我把while循环体中的语句"output+=rs.getString(1)+"\t"+..."不要就可以正常运行!
    所以我觉得问题就发生在这个循环体里面的两条语句有冲突,请个位高手帮我解答一下,数据库的表book里的字段都是文本形,查过书,可以用ResultSet.getInt();来获得!