MySQL每次打开一个新语句?

时间:2016-06-17 14:20:34

标签: java mysql jdbc

我现在和MySQL合作很长时间了,我知道我一次只能打开一个连接。

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

每次运行MySQL-Query或Update时,我都会打开一个新的语句:

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?像这样:

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

我遇到的另一个问题是,如果我必须在最后关闭这些语句,或者Java是否自动执行此操作。

2 个答案:

答案 0 :(得分:1)

您可以多次使用Statement。如果每次都创建另一个// Returns iterators to the three partition points in the range template<class ForwardIt, class Which> auto split4(ForwardIt first, ForwardIt last, Which which) { std::array<ForwardIt, 3> ret; ret[0] = std::partition(first, last, [&](const auto &v){return which(v) == 0;}); ret[1] = std::partition(ret[0], last, [&](const auto &v){return which(v) == 1;}); ret[2] = std::partition(ret[1], last, [&](const auto &v){return which(v) == 2;}); return ret; } 对象,效率会很低。

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

  • 关闭连接时关闭语句

因此,如果您关闭连接,则不必担心结束语句。联系的结束被讨论here

答案 1 :(得分:0)

您可以创建一个方法来执行更新/插入操作

public void updateQuery(String query){
...
}

要防止SQL注入,请尝试使用PreparedStatement