使用java.sql.PreparedStatement咨询

tomorrower 2015-12-25 11:09:59
为了数据库效率和安全,使用java.sql.PreparedStatement来操作数据

我有三个语句:
SQL1="INSERT INTO TABLE VLAUES(?,?,?,?)"
pstmt_update= conn.prepareStatement(SQL1);
pstmt_update.executeUpdate();
pstmt_update.close()

SQL1="DELETE FROM TABLE WHERE COL=?)"
pstmt_update= conn.prepareStatement(SQL2);
pstmt_update.executeUpdate();
pstmt_update.close()

SQL1="UPDATE TABLE SET COL1=? WHERE COL2=?"
pstmt_update= conn.prepareStatement(SQL3);
pstmt_update.executeUpdate();
pstmt_update.close()

请问,为了性能考虑,我是否应该新建3个PreparedStatement?

还是一个pstmt_update就足够了?


是否有必要需要为每个SQL语句分配一个PreparedStatement?


...全文
143 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomorrower 2015-12-25
  • 打赏
  • 举报
回复
引用 1 楼 oh_Maxy 的回复:
可以考虑使用mybatis,毕竟自己字符串拼的SQL,多少有点怪怪的。
小项目,就没考虑用mybatis了 我关注的是,数据量很大,每天要更显几万条记录 ,是否需要申请多个PreparedStatement?为每一条语句申请一个PreparedStatement,是否有助于提高效率?
oh_Maxy 2015-12-25
  • 打赏
  • 举报
回复
关于update语句,可以全部列更新,只要保证不改的值也查出来,更新一下没变化的值,效率影响不大。
oh_Maxy 2015-12-25
  • 打赏
  • 举报
回复
可以考虑使用mybatis,毕竟自己字符串拼的SQL,多少有点怪怪的。
tomorrower 2015-12-25
  • 打赏
  • 举报
回复
谢谢,我在循环外建立了三个PreparedStatement,分别对应UPDATE DELETE INSERT 类型的SQL语句,所有的select类型的语句使用一个PreparedStatement 我这样做的目的是,希望能够(update类型的)提高数据库的效率
oh_Maxy 2015-12-25
  • 打赏
  • 举报
回复
为每个字段的更新都设计一个,这样你在挑选SQL的时候,还要判断哪个字段更新了。更可怕的是,如果想同时更新2个字段呢?要两两组合。三个字段呢? 嗯,你也可以对比下update语句,一次更新1个和一次更新多个字段的效率。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧