解决方案 »
- 求匿名内部类的正确使用方法,下面是一个查询数据库的方法。求解决问题。
- 关于spring 生成的默认页面为.htm的问题
- 为什么选择Java?
- spring.jar是spring哪个版本里的啊?我看spring1-2和spring2-0都没这个包啊
- socket 客户端的双输入等待问题,请教。
- Struts 1 的 Action 中,能否使用 Include 方式,“转向”到一个 Jsp 页面?
- 请问没有工作经验的我,下步该怎么走?
- 网站中的浏览历史是怎样按照cookie里排序的方式回显到页面上的
- 哪位老师能帮我推荐几个好用的开源DB组件?
- 愚弟最近研究weblogic,jboss,ejb
- struts过滤器问题
- struts+spring+hibernate调用数据库存储过程
内部类定义在方法中成为局部内部类,只在局部有效。该类只为所在的方法块服务。
局部内部类和成员内部类一样可以访问外围类的所有成员,但是不可以访问同在一个局部块的普通局部变量。如果要访问,此局部变量要被声明称final的。
代码块结束后普通的局部变量会消亡,而创建的局部内部类对象并不会随着语句块的结束而消亡。final的局部变量的存储方式和普通的局部变量不同,其不会因为语句块的结束而消失,还会长期存在,因此可以被局部内部类访问。
String sqlstr = "SELECT articles.id,articles.title,MAX(clickcounts) AS clickcounts,articles.img FROM articles WHERE "
+ "forid IN(SELECT titletwo.`ID` FROM titletwo WHERE forid IN (SELECT id FROM titleone WHERE titletab=?)) GROUP BY clickcounts desc limit ?,?;";
mysqlcon = Mysqlcon.getInstacce();
final Connection connection = null;
try {
connection = mysqlcon.getConnection();
} catch (SQLException e1) {
System.err.println("获取连接桥失败..");
e1.printStackTrace();
}
List<Articles> list = new ArrayList<>();
try {
final PreparedStatement ps = (PreparedStatement) connection.prepareStatement(sqlstr);
ps.setString(1, titleonetitle);
ps.setInt(2, indexone);
ps.setInt(3, indextwo);
final ResultSet rs = (ResultSet) ps.executeQuery();
while (rs.next()) {
Articles articles = new Articles();
articles.setId(rs.getInt(1));
articles.setTitle(rs.getString(2));
articles.setClickcounts(rs.getInt(3));
articles.setImg(rs.getString(4));
list.add(articles);
}
timer = new Timer(true);
timer.schedule(new TimerTask() {
public void run() {
//这里会报错,说的是必须设置rs,connection为final类型
mysqlcon.free(rs, ps, connection);
}
}, 0, 5000);
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
这时候外边可不能再close它们了。