我现在和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是否自动执行此操作。
答案 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