补充一点
   java开发包是:j2sdk1.4.1
   数据库是:Oracle8i

解决方案 »

  1.   

    个人愚见:做不到!A table of data representing a database result set, which is usually generated by executing a statement that queries the database. A ResultSet object maintains a cursor pointing to its current row of data. Initially the cursor is positioned before the first row. The next method moves the cursor to the next row, and because it returns false when there are no more rows in the ResultSet object, it can be used in a while loop to iterate through the result set. A default ResultSet object is not updatable and has a cursor that moves forward only. Thus, you can iterate through it only once and only from the first row to the last row. It is possible to produce ResultSet objects that are scrollable and/or updatable. The following code fragment, in which con is a valid Connection object, illustrates how to make a result set that is scrollable and insensitive to updates by others, and that is updatable. See ResultSet fields for other options. 
           Statement stmt = con.createStatement(
                                          ResultSet.TYPE_SCROLL_INSENSITIVE,
                                          ResultSet.CONCUR_UPDATABLE);
           ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");
           // rs will be scrollable, will not show changes made by others,
           // and will be updatableResultSet在执行update操作时肯定会修改数据库的内容!
      

  2.   

    “并且以ResultSet 对象返回值”这个做法不好。
      

  3.   

    不能这样做。以前写C\S的多了。写函数这样写。但是记录集当你关闭连接的时候,他就消失了。
    在B\S中,连接用完就的关闭,把ResultSet 写到某数据类型中,你返回Vector或Arrilist,等数据类型都行的。
      

  4.   

    TO :bluesmile979 and all friends
    因为我是在写一个权限管理模块的数据检索的接口函数:
    权限要求一些表 的记录的值必须要赋予权限之后才能显示;而其他程序员他们调用他们自己的查询语句来查询记录,而这些查询语句的结构对我来讲是未知的,并且其他程序员都是用ResultSet对象
    来操作数据库的,所以才有此要求;
        望各位出出注意
      

  5.   

    那其他程序员的SQL语句肯定包括where 程序员ID='他的ID'
      

  6.   

    我不知道他们的查询语句的结构(这些只能是动态的,未知的)如:
      是否有where 
      是否有表的别名
      是否有查询的字段的别名
      是否排序
      是否分组等等
    如果可以的话我愿意实现
    public String getselectstr(String selectstr){//分析selectstr
    //加入我的 [where][and]程序员ID='他的ID'return 
    }这段代码好象也很难实现另外 在Oracle(pl/sql)好象可以实现,请Oracle高手指点一二
      

  7.   

    如果要这样做,可以看作是ResultSet的嵌套,但很可惜,JAVA中是不能进行ResultSet的嵌套处理的,而且在程序中也不会这么处理,其实,你更应该关心的是你要实现的这个方法中的ResultSet参数是否有存在的必要
      

  8.   

    ResultSet 如果能够作为返回参数的话,用处很大:
       其他程序员的数据代码一概是:rs.next(),rs.getXXX 等等
    如果返回其他类:如Vector;LinkedList 对整个系统的代码改动过大?好象在Oracle中的存储控制,配合存储过程和触发器可以实现,不过我
    对Oracle不是很熟悉;请求解决方案
      

  9.   

    public ResultSet getfindout(String srcSql,//已有的SQL
                                String fields,//要比较的字段别名
                                String comparevalue//要比较的值,这里比较方式
                               ){                  //就以 “=”
        dstSql="select * from (" + srcSql + ") as tb1" ;
        dstSql+="where tb1." + fields + "='" + comparevalue +"'";    ResultSet rs=conn.ExecQuery(dstSql);
    return rs;
    }
      

  10.   

    thanks fireiceman谢谢 所有的参与朋友!
    正在考虑中
    如果有不同的意见请赶快发表
      

  11.   

    还在考虑中啊。
    用ResultSet来作为中间数据结构确实是比较傻的行为。
    <<ResultSet 如果能够作为返回参数的话,用处很大>>
    这句话俺是不会认可的。
    简单说一点吧,ResultSet是JDBC定义数据描述接口,而如果你使用ResultSet作为数据返回,那么就把你的数据读取接口和JDBC紧密地耦合在一起。也就是说把数据获取逻辑和数据获取方式这两者耦合在了一起,这样的接口等于说只能和JDBC在一起使用,首先是一个不灵活的结构。这两者都无法独立地变化,所谓牵一发而动全身,等到开发的后期就会痛苦了。如果发生数据持久化需求的变更就更加痛苦了,假设你们的客户要求未来的数据不再使用数据库存储,而是使用XML文件存储,难道还要返回ResultSet?如果不是,那么需要修改所有的数据获取程序。
    另外,如果抽象出合理的数据结构,那么所有的数据操作就可以基于数据结构进行。如果你使用ResultSet作为标准数据结构,标准的接口污染!ResultSet接口中定义的所有方法并不是你所需要的,可能你只需要简单的get*系列方法,那么为什么还要容纳那么多不相干的东西进来?
    再者,ResultSet只是一个接口,具体的实现是不同的JDBC驱动厂商来实现的,可能Oracle有它自己的实现,mysql有自己的实现等等。如果你的程序还必须倚赖在ResultSet实现细节上才能达到正确的执行效果,那么就更可怕了,等于说和具体的JDBC驱动绑定死了。其实不合理的地方有很多,比如俺得到了一个ResultSet,现在需要遍历整个数据集,那么可能代码会是这样:
    while(rs.next()) {
       // ....
    }
    问题是:“为什么在遍历数据结果的时候俺还要处理SQLException?”楼主你觉得合理啊?这个遍历数据和SQLException应该有关系吗?抽象数据类型(ADT)是很关键的东西,如果没有合理地抽象,会让你的程序很痛苦。