JSP页面中这样使用: CallableStatement stmt=con.prepareCall("{call ap_adduser(?,?,?,?)}"); stmt.registerOutParameter(1,Types.INTEGER,1);//注册输出变量 stmt.setString(2,"edmund"); stmt.setInt(3,1); stmt.setString(4,"description"); stmt.execute(); int userid=stmt.getInt(1); stmt.close()
八,使用事务 1,事务中的操作是一个整体,要么都执行成功要么都不成功:事务开始后,如果所有的改变都正确,则使用commit方法将这些动作全部存入数据库,否则就使用rollback取消所有的改变动作,而这时数据库中的数据和执行事务前的是相同的。 2,使用事务时应当先用 con.setAutoCommit(false),最后使用commit或者rollback 3,rollback一般在catch段执行 九,数据库连接池 1,如果有一个数据库连接请求并且连接中没有连接,则生成一个新的连接。这个连接使用完之后并不关闭它,而是将它放入连接池。在这个过程中,还要判断连接池中的连接是否超期。如果超期则将它关闭。 2,有很多已有的Connection Pool包可以使用。 3,一般将Connection Pool作为一个application作用域的变量使用 <jsp:useBean id="pool" scope="application" class="javastart.tools.ConnectionPool" /> <%@page import="java.sql.*"%> <%@page import="javastart.tools.*"%> <!--javastart.tools是你的Connection Pool所在的地方--> DBConnection con=null; try{ con=pool.getConnection("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:access","",""); Statement stmt=con.createStatement(); stmt.setMaxRows(10); String query=request.getParameter("quey"); ResultSet rs=stml.executeQuery(query); ResultSetMetaData rsmd=rs.getMetaData(); } ..... finally{ pool.releaseConnection(con); } 也可以使用一个Servlet初始化连接池 http://blog.csdn.net/goldbox/archive/2007/02/02/1501333.aspx |