首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用资源(PreparedStatements)

尝试使用资源(PreparedStatements)
EN

Stack Overflow用户
提问于 2020-05-24 17:43:15
回答 2查看 130关注 0票数 1

所以我想知道哪种方法更好,我将从一个文件中读取每一行,并将其存储到我的数据库中。我将有很多准备好的语句,因为我将执行lof选择(检查条目是否存在以从表中获取id值),或者在不存在时插入。这种sql将执行5次,就像我将插入5个不同的表一样。

因此,我不确定是否可以创建许多准备好的语句,因为我将留下大量打开的连接,但是大多数语句将在我从文件中读取时使用。或者因为我有很多前置语句,在while循环中创建它们,并将它们放在自己的try资源块中,这样我就不会留下太多打开的连接了?

代码语言:javascript
复制
try {PreparedStatement stmt1 = connection.PrepareStatement(Sql);
     PreparedStatement stmt2 = connection.PrepareStatement(Sql);
     PreparedStatement stmt3 = connection.PrepareStatement(Sql);
     PreparedStatement stmt4 = connection.PrepareStatement(Sql);
     etc . . . )
     while read line from file {
           //etc
     }
}

或者这是优先考虑的:

代码语言:javascript
复制
while read line from file {
     try {PreparedStatement stmt1 = connection.PrepareStatement(Sql);
          PreparedStatement stmt2 = connection.PrepareStatement(Sql))
          // stmt1.setint(1, blah)
          // stmt1.execute()
          //etc
     }

     try {PreparedStatement stmt3 = connection.PrepareStatement(Sql);
          PreparedStatement stmt4 = connection.PrepareStatement(Sql))
          // stmt1.setint(2, blah)
          // stmt1.execute()
          //etc
     }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-24 17:59:07

在这两种方式中,object.

  • However,都没有问题,因为您使用的是相同的连接

  • ,因此建议不要使用第二种方式,因为您将一次又一次地编译相同的SQL。纯粹是对计算能力的浪费和对垃圾收集的不必要压力!
票数 3
EN

Stack Overflow用户

发布于 2020-05-24 17:53:33

我会用第一个变体。第二个打开并关闭每个行的PreparedStatement,这将比一直打开它们要慢,特别是当您有很多行要处理的时候。准备声明本身也不是一种廉价的行动。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61989926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档