表都起别名的话就比较简单
x。字段
你可以搜索。x是那个表的别名,否则需要利用java.sql.ResultSet的元数据
rs.getMetaData()

解决方案 »

  1.   

    有别名当然是很简单。难点在于没有别名的情况,特别是含有一些临时表SQL语句。
    至于你说的rs.getMetaData()根本是不符合我的需求的:第一:它要先执行一边SQL语句,才能有个结果集rs;第二:它只是从结果集中获得结果集的列等等结构,不是我要的-------------------------------------------------------------------
    再次说明:我所希望的是在SQL语句执行之前,就用某种算法先对它进行一次“分析”,搞清楚这条SQL语句中使用到的字段分别是来自这条SQL语句中用到的哪张具体表最简单的例子:
    表A有字段a_id, name, re
    表B有字段b_id, gender, re对于 select gender from (select * from A inner join B on a_id = b_id) tmp where tmp.a_id = '1'要能分析出这条SQL中的
         gender 字段来自 B表 
         a_id   字段来自 A表
         b_id   字段来自 B表
         tmp.a_id 字段最终实际来自  A表 
      

  2.   

    第二:它只是从结果集中获得结果集的列等等结构,不是我要的 在执行sql之前,先分别执行查from 后面的n个表的sql,分别取得rs构建数据结构,我是这个意思,否则无法做到,我有x个理由可以推翻你先不预查就判断出来的想法。
    一个比较可行的方案是事先把所有的表查一遍取得分析元数据,放到一个比较好的数据结构,然后每次分析sql的时候去数据结构中查找分析判断。