下面是程序,我改过几次了,可是还是不行,由于在客户端我是以一定规则读取传输的数据的,大家帮我看下,我把数据库表的结构也发下,Scene和Scenery是我写的两个对象实体,我要将数据写如Scenery[][]中串行化后传给客户端 
     public Scenery[][] getSceneries()throws ModelException, ApplicationException{
        Connection conn=null;
        Statement stmt=null;
        ResultSet rs=null;
        
        try{
            String drname="sun.jdbc.odbc.JdbcOdbcDriver";
            Class.forName(drname);
            String url="jdbc:odbc:guidesys";
            conn=DriverManager.getConnection(url);
            stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
            String sql="select * from scene";
            rs=stmt.executeQuery(sql);
            rs.last();
            Scenery[][] sceneries=new Scenery[rs.getRow()][];
            Statement[] stmts=new Statement[rs.getRow()];
            ResultSet[] rses=new ResultSet[rs.getRow()];
            rs.beforeFirst();
            int i=0;
            while(rs.next()){
                stmts[i]=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
                String sql1="select * from scenery where scenery.scene=rs.getInt(1)";
                rses[i]=stmts[i].executeQuery(sql1);
                rses[i].last();
                sceneries[i]=new Scenery[rses[i].getRow()];
                rses[i].beforeFirst();
                int j=0;
                while(rses[i].next()){
                    sceneries[i][j]=new Scenery(rs.getString(2),rses[i].getString(3),rses[i].getString(4),rses[i].getString(5),rses[i].getString(6),rses[i].getString(7));
                    j++;
                }
                rses[i].close();
                stmts[i].close();
                i++;
            }
            rs.close();
            stmt.close();
            conn.close();
            return sceneries;
        }catch(Exception e){
            throw new ModelException(ModelException.CAUSE_SNACKS_NOT_FIND);
        }
    }

解决方案 »

  1.   

    下面是数据库里的结构:scene是景区表,scenery是景点表,scenery的scene字段是和scene表的id对应起来写的
    写入二维数组第一维为景区,第二维为景区下的景点
    access数据库里的数据 
    scene表 id 数字 name 文本 
    scenery表 id 自动编号 scene 数字 name 文本 其他字段....
      

  2.   

    问下我要控制台输出的在netbeans哪里显示
      

  3.   

    又见anqini 好楼主程序有什么问题。贴个看看
    还是说查询出来的数据有问题,可以描述下你的问题不.
      

  4.   

    我那个是服务器端的程序,编译时客户服务端都没错误
    但是我客户端访问服务端时出现错误
    客户端是J2ME应用程序
    下面是出现的错误
    com.xiaofan.guidesys.client.midp.share.ModelException
    at com.xiaofan.guidesys.client.midp.model.HttpHandler.openConnectionInputStream(+62)
    at com.xiaofan.guidesys.client.midp.model.HttpHandler.getSceneries(+32)
    at com.xiaofan.guidesys.client.midp.model.ModelFacade.getSceneries(+7)
    at com.xiaofan.guidesys.client.midp.ui.UIController$EventHandler.run(+166)
    at com.xiaofan.guidesys.client.midp.ui.UIController$EventHandler.run(+19)
    错误上的ModelException是自己写的,能出现该错误的位置就在我上面贴的那个方法上,在servlet还有这个方法的一段程序,我也发你看下,控制台那个我没用过,不太懂在哪个地方写,也不懂在哪察看
    请帮我看下,挺着急的,呵呵~
        private void getSceneries(ModelFacade facade,DataInputStream dis,DataOutputStream dos) throws IOException,ModelException,ApplicationException{
            Scenery[][] sceneries=facade.getSceneries();
            dos.writeInt(sceneries.length);
            for(int i=0;i<sceneries.length;i++){
                dos.writeInt(sceneries[i].length);
                for(int j=0;j<sceneries[i].length;j++){
                    sceneries[i][j].serialize(dos);
                }
            }
            return;
        }
      

  5.   

    虽然我没有用过netbeans,但是肯定有的,这是调试的时候很重要的~
    在视图中显示, Console~
      

  6.   

        谁懂的请帮忙完整看一遍,我已经再改了些地方,现在还是不行
        public Scenery[][] getSceneries()throws ModelException, ApplicationException{
            Connection conn=null;
            Statement stmt=null;
            ResultSet rs=null; 
            
            try{
                String drname="sun.jdbc.odbc.JdbcOdbcDriver";
                Class.forName(drname);
                String url="jdbc:odbc:guidesys";
                conn=DriverManager.getConnection(url);
                stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
                String sql="select * from scene";
                rs=stmt.executeQuery(sql);
                rs.last();
                Scenery[][] sceneries=new Scenery[rs.getRow()][];
                rs.beforeFirst();
                int i=0;
                while(rs.next()){
                    Statement stmts=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
                    ResultSet rses=stmts.executeQuery("select * from scenery where scenery.scene='"+rs.getString(1)+"'");
                    rses.last();
                    sceneries[i]=new Scenery[rses.getRow()];
                    rses.beforeFirst();
                    int j=0;
                    while(rses.next()){
                        System.out.println(rses.getString(3));
                        sceneries[i][j]=new Scenery(rs.getString(2),rses.getString(3),rses.getString(4),rses.getString(5),rses.getString(6),rses.getString(7));
                        j++;
                    }
                    rses.close();
                    stmts.close();
                    i++;
                }
                rs.close();
                stmt.close();
                conn.close();
                return sceneries;
            }catch(Exception e){
                throw new ModelException(ModelException.CAUSE_SNACKS_NOT_FIND);
            }
        }