Hi Tom,

Not to beat a dead horse, but in their example, the 2 close statements will not always 
be executed.  If an exception is thrown in the try block ahead of the 2 close 
statements they will not be executed.  They are guaranteed to always be executed if 
placed in the finally block.

Good luck

----------------------------------------------
Your right William,

       If you study the example, the rs.close and stmt.close always get
executed, just like a finally block always gets executed (except, of
course if an exception crashes the block before it can get to it. Good
code practice would say your right. This is the example from Resin's web
site. Good eye though :-)


T.K.


-----Original Message-----
From: A mailing list about Java Server Pages specification and reference
[mailto:[EMAIL PROTECTED]] On Behalf Of William W. Nelson
Sent: Monday, February 03, 2003 10:29 AM
To: [EMAIL PROTECTED]
Subject: Re: Closing a ResultSet, was "Re: odd oracle error"

rs.close() and stmt.close() should be in the finally block.


------------------------------------------------------------------------
---------
I have had a problem too when closing the result set. I found this
example  on "Resin's" web site. It is not an Oracow database, but it may
serve as an example.

T.K.

public void init()
  throws ServletException
{
  try {
    Context env = (Context) new
InitialContext().lookup("java:comp/env");

    pool = (DataSource) env.lookup("jdbc/test");

    if (pool == null)
      throw new ServletException("`jdbc/test' is an unknown
DataSource");
  } catch (NamingException e) {
    throw new ServletException(e);
  }
}

public void doGet(HttpServletRequest req,
                  HttpServletResponse res)
  throws IOException, ServletException
{
  res.setContentType("text/html");
  PrintWriter out = res.getWriter();

  Connection conn = null;
  try {
    conn = pool.getConnection();

    Statement stmt = conn.createStatement();

    ResultSet rs = stmt.executeQuery("select NAME, PRICE from
BROOMS");

    out.println("Brooms:<br>");
    while (rs.next()) {
      out.print(rs.getString(1));
      out.print(" ");
      out.print(rs.getInt(2));
      out.println("<br>");
    }

    rs.close();
    stmt.close();
  } catch (SQLException e) {
    throw new ServletException(e);
  } finally {
    try {
      if (conn != null)
        conn.close();
    } catch (SQLException e) {
    }
  }
}

===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST".

Some relevant archives, FAQs and Forums on JSPs can be found at:

 http://java.sun.com/products/jsp
 http://archives.java.sun.com/jsp-interest.html
 http://forums.java.sun.com
 http://www.jspinsider.com

Reply via email to