reset = mf.linker.exeQuery(sqlStr);if (reset.next()) {
   treatment = reset.getDouble(1); 
 }这一段代码在运行时出这样的问题:
reset.next()为ture,
但是程序不运行treatment = reset.getDouble(1); 语句,
直接跳到if语句的外面,
得不到我想要的结果。
SQL语句在数据库中运行有结果,reset中有查询得到的结果,就是取不出来。请问各位高手这是怎么回事?

解决方案 »

  1.   

    treatment = reset.getDouble("1");字段名必须用引号把!
      

  2.   

    while(reset.next()) {
       treatment = reset.getDouble(1); 
     }
    这样写试一下
      

  3.   

    楼上正解,
    TO:qczl1224(倾请一世) ( ) 信誉:100 treatment = reset.getDouble(1);-----------是取第一个字段Double型数据
    没有错的.
      

  4.   

    while(reset.next()) {
       treatment = reset.getDouble(1); 
     }
      

  5.   

    while(reset.next()) {
       treatment = reset.getDouble(1); 
     }
    if好像不行
      

  6.   

    我也用过while,但是还是行!!!
      

  7.   

    treatment = reset.getDouble("1");字段名必须用引号把! 我都说得很清楚了字段名要引起来!
    resultBean.setOrigin(rset.getInt("ORIGIN"));
    resultBean.setAgencyPay(rset.getString("AGENCYPAY"));
      

  8.   

    你那个Double在表里面是什么字段名 这个地方就用那个名字就是了!
    如果有多条数据得话!while就是取最后一条了!
    if就是取第一条!
    treatment = reset.getDouble("Double");
      

  9.   

    reset.getDouble() 是什么怎么可能是 给个 getDouble(1) 他就会取第一条第一个字段?
    有这个方法吗,,难道你自己重写过! 看看JDK帮助把! getDouble
    public double getDouble(String columnName)
                     throws SQLException
    Retrieves the value of the designated column in the current row of this ResultSet object as a double in the Java programming language. Parameters:
    columnName - the SQL name of the column 
    Returns:
    the column value; if the value is SQL NULL, the value returned is 0 
    Throws: 
    SQLException - if a database access error occurs
      

  10.   

    reset.getDouble(1);   不需要加引号的!
    只有引用字段名如 reset.getDouble("字段名");才要引号
    纯java代码最好用 reset.getDouble(1); 
    用字段名容易编译出错你的直接跳过if 
    说明reset中没有结果集
    检查你的sql语句中where后面的条件是否正确 
    在数据库中运行下  看能不能找出符合条件的行
      

  11.   

    getDouble(1) 可以取得第一条的第一个记录的!
      

  12.   

    oyh7481():sql语句在数据库中执行是不是有结果?在if前面有没有对reset进行过什么操作?
      

  13.   

    to:qczl1224(倾请一世) getDouble(1)的写法是对的,你说的也是对的
    public double getDouble(int columnIndex)
                     throws SQLException
    Retrieves the value of the designated column in the current row of this ResultSet object as a double in the Java programming language. Parameters:
    columnIndex - the first column is 1, the second is 2, ... 
    Returns:
    the column value; if the value is SQL NULL, the value returned is 0 
    Throws: 
    SQLException - if a database access error occurs
      

  14.   

    System.out.println(reset.next());看看是不是为true,我觉得你的代码没有错
      

  15.   

    之前只有reset.next()语句
    而且它的值为ture
      

  16.   

    是不是你在IDE中进行调试了呀,你想想调试的时候,你查看了reset.next()以后就已经执行了,所以就不会跑进去了,呵呵,知道了吧。
    --
    本人欲成立一个java开源组织,有兴趣的朋友可以加入,开源组织设立两个区域,一个区域是实际开发区,主要是实际的项目的开发;一个区域是后备力量培养区,主要为有热情加入开源组织、有一定的开发经验的朋友准备,这个区域将由专门的专家指导,提高开发能力。我们将积极的联系开源项目商业化,让项目组成员得到适当的回报。
    有意者联系:qq:57077490 qq群:20392347
      

  17.   

    首先reset.getDouble(1)和if (reset.next())肯定都没有语法上的问题。建议楼主在中间加一点调试语句,可以看看是不是真的没进去,我觉得出错的概率可能还是楼主的逻辑上有问题,不要轻易怀疑这是个很特别的情况。if (reset.next()) {
       System.out.println("@@@");
       treatment = reset.getDouble(1); 
     }
      

  18.   

    楼上的兄弟,if (reset.next())的值为真,但是就是进不去if花括弧里,输出是没有用的。
      

  19.   

    谢谢各位大侠的帮助,这个问题我自己解决了。
    解决方法是不要if (reset.next())后面的华括弧,这样直接运行treatment = reset.getDouble(1)语句,这样得到了自己想要的结果。
      

  20.   

    getDouble
    double getDouble(int columnIndex)
                     throws SQLException以 Java 编程语言中 double 的形式检索此 ResultSet 对象的当前行中指定列的值。 参数:
    columnIndex - 第一个列是 1,第二个列是 2,…… 
    返回:
    列值;如果值为 SQL NULL,则返回值为 0 
    抛出: 
    SQLException - 如果发生数据库访问错误