当前位置:  开发笔记 > 编程语言 > 正文

Java语句对象重用?

如何解决《Java语句对象重用?》经验,为你挑选了2个好方法。

我想知道我们是否可以重用相同的Statement对象来执行多个查询.或者,我们应该为不同的查询创建一个新的语句.

例如,

Connection con = getDBConnection();
Statement st1 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
int i = st1.executeUpdate("update tbl_domu set domU_status=1 where domU_id=" + dom_U_id);
Statement st2 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
int j = st2.executeUpdate("insert into tbl_domU_action_history values('" + dom_U_name + "', 1, '" + date + "')");  

在上面的例子中,对于executeUpdate()查询使用相同的语句st1是否有任何损害?我可以为另一个executeQuery()使用相同的Statement对象st1吗?



1> Epitaph..:

我遇到了我在Javadocs中寻找的回应

默认情况下,每个Statement对象只能同时打开一个ResultSet对象.因此,如果读取一个ResultSet对象与另一个ResultSet对象的读取交错,则每个ResultSet对象必须由不同的Statement对象生成.


它没有看到这是如何回答这个问题的:我们应该在Statement上调用close()方法吗?

2> Tom Hawtin -..:

是的你可以.但是,使用它PreparedStatement以避免SQL注入漏洞要好得多.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有