java - MySQL每次都打开一个新的Statement?

标签 java mysql jdbc

我已经使用 MySQL 很长时间了,我知道我应该一次只打开一个连接。

但现在我还有一个我认为尚未提出的问题。如果是这样,请不要责怪我,因为我还找不到答案。

每次运行 MySQL 查询或更新时,我都会打开一个新语句,如下所示:

Statement st = c.createStatement();
ResultSet res = st.executeQuery("SELECT * FROM ...;");
...
st = c.createStatement();
st.executeUpdate("INSERT INTO ...;");
...
st = c.createStatement();
res = st.executeQuery("SELECT * FROM ...;");
...
首先。是否可以为所有查询和更新创建一个语句?像这样:

Statement st = c.createStatement();
ResultSet res = st.executeQuery("SELECT * FROM ...;");
...
st.executeUpdate("INSERT INTO ...;");
...
res = st.executeQuery("SELECT * FROM ...;");
...

我的另一个问题是,我是否必须最终关闭这些语句,或者 Java 是否会自动执行此操作。

最佳答案

您可以多次使用Statement。如果每次都创建另一个 Statement 对象,效率会很低。

对于 JDBC 4.0 及更早版本(Java 6 及更早版本):

  • 连接关闭时语句也随之关闭

因此,如果您关闭连接,则不必担心关闭语句。讨论了关闭连接here

关于java - MySQL每次都打开一个新的Statement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37883973/

相关文章:

Java:使 Jframe 不水平滚动,和 JTextArea

php - mysql链表排序查询,为什么有效?

java - SQL如何使第一列自增

java - MySQL使用Statement.RETURN_GENERATED_KEYS时出错

java - 异常 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException

java - 如何在 Java 中检查二维数组是否占对角线

java - 我需要在我的 View 中调用 MediaPlayer

java - 我将如何迭代自定义对象列表,比较列表中的情侣并根据特定条件删除?

mysql 从连接表开始检索数据

mysql - RDBM 与 Java 应用程序的比较