try{
sta = conn.createStatement();
rs = sta.executeQuery("select * from search");
while (rs.next()) {
originStr=rs.getString("url");
System.out.println("原来的字段是 "+originStr);
sta.execute("update search set url='"+change(originStr)+"'");
}这段中sta首先执行一次
sta.executeQuery("select * from search");
然后在rs没有close时又执行了
sta.execute("update search set url='"+change(originStr)+"'");
执行这句后就会使rs被close掉吧,使得 while (rs.next()) 时出现Exception
sta = conn.createStatement();
rs = sta.executeQuery("select * from search");
while (rs.next()) {
originStr=rs.getString("url");
System.out.println("原来的字段是 "+originStr);
sta.execute("update search set url='"+change(originStr)+"'");
}这段中sta首先执行一次
sta.executeQuery("select * from search");
然后在rs没有close时又执行了
sta.execute("update search set url='"+change(originStr)+"'");
执行这句后就会使rs被close掉吧,使得 while (rs.next()) 时出现Exception
不过我觉得楼主是不是用sta.executeUpdate("update 代替sta.execute("update 试试看先
用execute时,程序只输出了一行“原来的字段是...”,说明sta把rs关闭了。
用executeUpdate时,程序输出多行“原来的字段是...”,说明sta没有把rs关闭。