表名:table
共有3列。
用户a能够查询第1,2列,用户b能够查询第1,3列。
需要在jdbc中实现一个操作,能够通过变量来控制返回的查询结果有哪几列。请问该如何写?谢谢!在线等。

解决方案 »

  1.   

    通过变量判断不同权限的人,也就是对应的a,b。
    然后不同的人对应不同的SQL语句。
      

  2.   

    问题补充:每个权限能够查询的列是通过外部文件配置的,可以根据管理员的需要进行修改,而不是静态的,所以没办法固定写SQL语句。
      

  3.   

    那就用SQL语句中的decode()函数。当存在你想要的列的时候,就把他查出来。
    会decode函数吧?
      

  4.   

    权限对应到字段
     拼sql
      

  5.   

    有没有兄弟能够举个具体的例子来?小弟刚学jdbc很多都不懂。
    我不知道PreparedStatement ps=conn.prepareStatement(select ? from table);这种语句能不能出现在jdbc中。
      

  6.   

    通过变量判断不同权限的人,也就是对应的a,b。 然后不同的人对应不同的SQL语句。
      

  7.   

    不用搞这么复杂,把你的1,2,3列都取出来,如果是用户a就把1,2两列给他,如果是用户b就把1,3列给他。这样sql是一个,不同的是根据用户不同从rs里取的值不同而已。这样就容易多了
      

  8.   

    可以在sql上做文章这里的字段是你想要的字段
    select * from (select 字段1,字段2.....字段n ,rownum from table1 t1)  where t1.rownum =你想要的行(eg:2)
    或者:select * from (select 字段1,字段2.....字段n ,rownum from table1 t1)  where t1.rownum between 1 and 2
      

  9.   

    把a,b的权限设置一个列数组,
    如a的权限为column1,column2
    b的权限为column1,column3
    这样SQL语句可以写两种,第一种遍历该用户的权限数组,使sql最后成为 select column1,column2 from tablename;
    select column1,column3 from tablename;第二种就用select * from tablename,
    在结果显示上判断是否包含权利里列名,包含则显示,不包含就不显示
      

  10.   

    问题补充:每个权限能够查询的列是通过外部文件配置的,可以根据管理员的需要进行修改,而不是静态的,所以没办法固定写SQL语句。
    ------------
    是怎么配置的?第几列还是字段名?
    我觉得这个并不难实现,关键是你的(需求)配置抽象到什么程度