我有这样一个程序:
public void MethodOne()
{
String sqlquery = "select * from vendor_items where category_id = 1 ";
PreparedStatement consildatedPst = connection.prepareStatement(sqlquery);
ResultSet consilatedReslset = consildatedpst.executeQuery();
while(consilatedReslset.next())
{
String name = consilatedReslset.getString("name");
if(name!=null)
{
MethodTwo();
}
}
}
public void MethodTwo(String name)
{
String sqlquery2 = "select ename from Vendor where name=?";
PreparedStatement otherPst = connection.prepareStatement(sqlquery2);
otherPst.setString(1,name);
}
这是建立连接的方式(稍后我会选择连接池)。
public class DBConnection {
public static Connection getDBConnection() {
String sURL="jdbc:mysql://localhost:3306/oms";
String sUserName="root";
String sPwd="";
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(sURL, sUserName,sPwd);
return conn;
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
}
}
我的问题是,在Method ??
中调用时,我可以使用相同的连接对象吗?答案 0 :(得分:1)
是的,你可以。
当你这样做时:
connection.prepareStatement(sqlquery2);
它使用相同的连接创建一个新的语句对象。因此,您从中获取的ResultSet将属于不同的语句,并且会有所不同,并且对您没有任何问题。
简而言之:不同的语句管理不同的ResultSet。如果你在获得第二个时从同一个Statement获得2个ResultSet,第一个将被删除,但如果你有2个语句,你可以毫无问题地管理2个ResulSets(当然,连接是打开的)
答案 1 :(得分:0)
仅当您未在多个线程中使用连接或嵌套自己的方法时。换句话说,没有。每种方法使用一个新连接。为避免开销,请使用连接池。