在JDBC中,可以使用单个Statement
对象多次调用executeQuery("")
吗?安全吗?或者,我应该在每次查询后关闭statement对象,然后创建新对象来执行另一个查询。
例如:
Connection con;
Statement s;
ResultSet rs;
ResultSet rs2;
try
{
con = getConnection();
s = con.prepareStatement();
try
{
rs = s.executeQuery(".......................");
// process the result set rs
}
finally
{
close(rs);
}
// I know what to do to rs here
// But I am asking, should I close the Statement s here? Or can I use it again for the next query?
try
{
rs2 = s.executeQuery(".......................");
// process the result set rs2
}
finally
{
close(rs2);
}
}
finally
{
close(s);
close(con);
}
发布于 2014-01-24 15:46:02
是的,您可以重用Statement
(特别是PreparedStatement
),通常应该使用JDBC这样做。如果不重用语句并立即创建另一个相同的Statement
对象,这将是低效和糟糕的风格。就关闭它而言,在finally块中关闭它将是合适的,就像您在此代码片段中一样。
有关您所问问题的示例,请查看此链接:jOOq Docs
发布于 2014-01-24 16:08:46
首先,我对你的代码感到困惑。
s = con.prepareStatement();
它工作正常吗?我在JAVA API中找不到这样的函数,至少有一个参数是needed.Maybe您想要调用这个函数
s = con.createStatement();
我只用一个语句实例运行了两次访问DB2的代码,没有在两个操作之间关闭它,这很好用,我想你也可以自己尝试一下。
String sql = "";
String sql2 = "";
String driver = "com.ibm.db2.jcc.DB2Driver";
String url = "jdbc:db2://ip:port/DBNAME";
String user = "user";
String password = "password";
Class.forName(driver).newInstance();
Connection conn = DriverManager.getConnection(url, user, password);
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
int count = 0;
while (resultSet.next()) {
count++;
}
System.out.println("Result row count of query number one is: " + count);
count = 0;
resultSet = statement.executeQuery(sql2);
while (resultSet.next()) {
count++;
}
System.out.println("Result row count of query number two is: " + count);
https://stackoverflow.com/questions/21327012
复制相似问题