在方法中调用时,我可以使用相同的连接对象吗?

时间:2014-07-05 11:23:11

标签: java jdbc

我有这样一个程序:

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 ??

中调用时,我可以使用相同的连接对象吗?

2 个答案:

答案 0 :(得分:1)

是的,你可以。

当你这样做时:

connection.prepareStatement(sqlquery2);

它使用相同的连接创建一个新的语句对象。因此,您从中获取的ResultSet将属于不同的语句,并且会有所不同,并且对您没有任何问题。

简而言之:不同的语句管理不同的ResultSet。如果你在获得第二个时从同一个Statement获得2个ResultSet,第一个将被删除,但如果你有2个语句,你可以毫无问题地管理2个ResulSets(当然,连接是打开的)

答案 1 :(得分:0)

仅当您未在多个线程中使用连接或嵌套自己的方法时。换句话说,没有。每种方法使用一个新连接。为避免开销,请使用连接池。