SQL2005数据库中有A,B两张表
每张表的字段都是F,F1,F2
其表A和B中的F字段都是一样的内容,但是F1和F2的字段内容都是不一样的,但是字段名是一样的现在我用JDBC连接后,进行一系列操作SQL="select A.*,B.* from A,B where A.time=B.time order by A.F";
rs = stmt.executeQuery(SQL);
rs.next();
System.out.println(rs.getDouble("A.F1"));
System.out.println(rs.getDouble("A.F2"));
System.out.println(rs.getDouble("B.F1"));
System.out.println(rs.getDouble("B.F2"));这段代码出错了,问题显示是"没有A.F1这样的列名"
我想知道在这种情况下,我要如何能读到A表中的F1和B表中的F1的数据(这两个数据是不同的)?

解决方案 »

  1.   

    呵呵,本来就没有 A.F1这样的名字,你应该在sql里面指定别名才行,比如SQL="select A.F A_F,A.F1 A_F1,A.F2 A_F2,B.F B_F,B.F1 B_F1,B.F2 B_F2 from A,B where A.time=B.time order by A.F"; 然后用
    System.out.println(rs.getDouble("A_F1"));
    System.out.println(rs.getDouble("A_F2"));
    System.out.println(rs.getDouble("B_F1"));
    System.out.println(rs.getDouble("B_F2")); 
      

  2.   

    这下麻烦了
    因为我的A,B两张表总共有180多个字段名呢,其中大部分都是同名的,但是数据都不同
    而查询结果集中,都是F1,F1这样的同名的列有什么办法可以解决这个问题么?
    谢谢老紫竹的帮助呀,你帮了我很多次啦 :)
      

  3.   

    建个视图,把两张表相同字段name的重组成一张虚拟的表,然后从这个视图里面查询
      

  4.   

    用这个方法:
    ResultSet.getDouble(int index)
      

  5.   

    ldt_love_java
    这个方法我知道的哦,但是问题是两张表在设置的时候,字段的前后顺序并不是完全相同的
    这样以后每搞两张表,就需要重新设置过这个数字的参数.也很麻烦那
      

  6.   

    180个字段?难道用循环拼出来一个SQL 字符串很复杂吗??简单的一个 for 而已,我就不写了,你要是写不出来,干脆改行算了!唯一的提示:用StringBuilder 做,不要用String
      

  7.   

    SQL的构造应该不会难吧,就是把表里的字段分别用别名表示。
    JDBC取出的值,赋值给bean的话,就有点麻烦吧,用set/get方法么?
      

  8.   

    像9楼说的那样,构建SQL时是循环的,那取的时候就也能循环取出来。
      

  9.   

    用 RESULTSET.getMethData() 来映射列名称