下面是程序,我改过几次了,可是还是不行,由于在客户端我是以一定规则读取传输的数据的,大家帮我看下,我把数据库表的结构也发下,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);
}
}
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);
}
}
写入二维数组第一维为景区,第二维为景区下的景点
access数据库里的数据
scene表 id 数字 name 文本
scenery表 id 自动编号 scene 数字 name 文本 其他字段....
还是说查询出来的数据有问题,可以描述下你的问题不.
但是我客户端访问服务端时出现错误
客户端是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;
}
在视图中显示, Console~
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);
}
}