get/close DataSource连接的正确方法
The correct way to get/close DataSource connection
我正在 eclipse 上开发一个动态 web 项目。
下面是使用 DataSource 连接 MySQL 的示例。
这是正确的方法吗?我的意思是在 Servlet 中获取连接是否正常?
此外,我发现这种 get/close 连接的方式很乏味,因为每次我想要 get/close 连接时,我都需要编写完全相同的代码部分。我认为应该有更好的方法。有人可以给我一些建议吗?
谢谢!
@WebServlet(name="HelloUser", urlPatterns={"/hellouser"})
public class HelloUserServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
DataSource ds = MyDataSourceFactory.getMySQLDataSource();
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
con = ds.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(...);
...
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(rs != null) rs.close();
if(stmt != null) stmt.close();
if(con != null) con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
从 Java 7 开始,您可以使用 try-with-resource
(JDBC api 已更新以实现 Autocloseable)。
The try-with-resources statement is a try statement that declares one
or more resources. A resource is an object that must be closed after
the program is finished with it
例如
try (Connection con = ds.getConnection();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(...)) {...}
我正在 eclipse 上开发一个动态 web 项目。
下面是使用 DataSource 连接 MySQL 的示例。 这是正确的方法吗?我的意思是在 Servlet 中获取连接是否正常?
此外,我发现这种 get/close 连接的方式很乏味,因为每次我想要 get/close 连接时,我都需要编写完全相同的代码部分。我认为应该有更好的方法。有人可以给我一些建议吗?
谢谢!
@WebServlet(name="HelloUser", urlPatterns={"/hellouser"})
public class HelloUserServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
DataSource ds = MyDataSourceFactory.getMySQLDataSource();
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
con = ds.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(...);
...
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(rs != null) rs.close();
if(stmt != null) stmt.close();
if(con != null) con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
从 Java 7 开始,您可以使用 try-with-resource
(JDBC api 已更新以实现 Autocloseable)。
The try-with-resources statement is a try statement that declares one or more resources. A resource is an object that must be closed after the program is finished with it
例如
try (Connection con = ds.getConnection();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(...)) {...}