小弟初学,问下,在JSP中,不同的statement状态集是不是不可以对同一个表执行相同 的操作啊 !!!!!!!!!!!!!!!
RT:
ResultSet rs2 = stmt2.executeQuery( "select * from xuejidangan where 行政班级= ' "+xingzhengbanji0+ " ' ");
out.println( "ooooooooooooooo ");
ResultSet rs5 = stmt4.executeQuery( "select * from xuejidangan where 行政班级= ' "+xingzhengbanji11+ " ' ");
out.println( "ooooooooooooooo ");
我用out.println打印了下,rs2结果正确,而rs5却为空,奇怪??
------解决方案--------------------你可以把两个select换成insert,
看看,两次执行是事都把数据写入了,
就知道可不可以用两次了.
------解决方案--------------------好像没有什么错误,可以这样操作的。
------解决方案--------------------try{
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
Class.forName( "com.mysql.jdbc.Driver ");
String dburl,dbname,dbpwd;
con = DriverManager.getConnection(dburl,dbname,dbpwd);
stmt = con.prepareStatement( "SELECT id FROM table1 ");
rs = stmt.executeQuery();
while(rs.next()){
out.print(rs.getInt( "id "));
}
stmt.close();
stmt = con.prepareStatement( "SELECT name FROM table1 ");
rs = stmt.executeQuery();
while(rs.next()){
out.print(rs.getString( "name "));
}
stmt = con.prepareStatement( "SELECT name,type FROM table1 ");
rs = stmt.executeQuery();
while(rs.next()){
out.print(rs.getString( "name ");
out.print(rs.getString( "type ");
} //如此类推
rs.close();
stmt.close();
con.close();
}
catch(Exception e){}
------解决方案--------------------stmt2,stmt4是用同一个Conn对象吧,不可以的,要先释放掉,才可以再用,不可以一个conn对象对应多个Stmt对象,这样做,第二个会出错吧
或者改成这样
ResultSet rs2 = stmt2.executeQuery( "select * from xuejidangan where 行政班级= ' "+xingzhengbanji0+ " ' ");
out.println( "ooooooooooooooo ");
ResultSet rs5 = stmt2.executeQuery( "select * from xuejidangan where 行政班级= ' "+xingzhengbanji11+ " ' ");
out.println( "ooooooooooooooo ");
------解决方案--------------------ResultSet rs2 = stmt2.executeQuery( "select * from xuejidangan where 行政班级= ' "+xingzhengbanji0+ " ' ");
out.println( "ooooooooooooooo ");
stmt2.close();
ResultSet rs5 = stmt4.executeQuery( "select * from xuejidangan where 行政班级= ' "+xingzhengbanji11+ " ' ");
out.println( "ooooooooooooooo ");
------解决方案--------------------我的环境如下 jdk1.5 oracle 9i 没有问题
------解决方案--------------------同时使用多个stmt或rs来操作时,最好是用几次声明几次,否则会出先一些莫名其妙的错误.
建议使用格式(查询两次):
Connection conn = null;
Statement stmt = null;
Statement stmt1 = null;
// PreparedStatement pstmt = null;
// PreparedStatement pstmt1 = null;
ResultSet rs= null;
ResultSet rs= null;
String sql1 = "SELECT * FROM TBL ";
String sql2 = "SELECT * FROM TBL ";