这是resultset的查找机制决定的
打个不是很恰当的比方,就好是游标,在查找完Ex_Name,它就定位在Ex_Name后面,同理查询了startTime,就定位在startTime后面,这里问题就出来了,你查询了frequency后,resultser定位在frequency后面,而sampleNum是在frequency前面的,当然找不到了,也就是提示"无效的描述符索引"我的做法是为每一个查询赋值,在调用它,也就是String startTime1=resultset.getString("startTime");按字段顺序赋值,就不会出现这样的问题了当然,你也可以用ResultSet的prev()方法来达到目的,前提是你很了解ResultSet

解决方案 »

  1.   

    楼上的兄弟,取字段的顺序好像没有什么关系吧!
    楼主,你确认你的select语句中有查询sampleNum这个字段吗?有没有拼写正确啊?
      

  2.   

    同意楼上的兄弟,应该不是顺序的问题。注意检查拼写,如果用的resultset.getInt(number)的形式,还要注意不要越界
      

  3.   

    不是顺序的问题
    多次调试的时候发现:
    屏蔽掉
    shotName = resultset.getString("Ex_Name");
    就可以了
    sql语句为:
    sqlStr = "SELECT sampleNum FROM ShotInfo WHERE Ex_name='" + shotName + "'";
    感觉上好像是where中包含的不再get就可以了.
    不过不知道为什么
      

  4.   

    不会吧,应该是你SELECT里字段错了
      

  5.   

    这个问题我也遇到过~~
     我百分之百的确信,第一个兄弟 FaneAnn(十年等待) 说的是对的~~
     数据库查询是这样的,是顺序的,上次我也出现了这个问题,不过换个位置就行啦~~
     不信你把sampleNum 放在frequency的前面,试试看,应该不会有异常!!
      

  6.   

    拷贝错了
    sql语句是:
    sqlStr = "SELECT * FROM ShotInfo WHERE Ex_name='" + shotName + "'";