乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      JSP中早就有了類似.Net DataSet那樣的離線數據訪問了,拋棄ResultSet,擁抱Result吧!

       昵稱2807 2005-11-18
      JSP中早就有了類似.Net DataSet那樣的離線數據訪問了,拋棄ResultSet,擁抱Result吧!

      微軟的.NET平臺上面的數據訪問有一個特點,就是數據查詢的結果,可以放在內存中,以XML格式進行描述,不需要一直與數據庫保持在線連接,用DataSet + Data Adapter來實現!

      而在JDBC中,我們通常使用javax.sql.ResultSet類來存放放回的數據,它的流程和生命周期如下:

      使用ResultSet來返回數據庫查詢結果
      Client --> Connection --> Statement --> JDBC Driver --+
        Database
      Client <-- Parsing <-- ResultSet <-- JDBC Driver --+
                     
        Connection lifecycle
         
         
       
        ResultSet lifecycle  
       

      我們可以看到,這樣會長期占用數據庫連接的資源,是一個有點不爽的問題...

      其實,在JSTL中提供了另外一種機制,讓我們在返回查詢結果到表示層的時候,可以做到離線使用!它就是javax.servlet.jsp.jstl.sql.Result類!

       1 <%@taglib uri="http://java./jsp/jstl/core" prefix="c"%>
      2 <%@page contentType="text/html; charset=UTF-8"%>
      3 <%@page import="java.sql.Connection"%>
      4 <%@page import="java.sql.DriverManager"%>
      5 <%@page import="java.sql.ResultSet"%>
      6 <%@page import="java.sql.SQLException"%>
      7 <%@page import="java.sql.Statement"%>
      8 <%@page import="javax.servlet.jsp.jstl.sql.Result"%>
      9 <%@page import="javax.servlet.jsp.jstl.sql.ResultSupport"%>
      10 <%
      11 // 暫且把這個下面的內容看作多層架構中的DAO好了,我偷懶了!
      12 Connection conn = null;
      13 Statement stmt = null;
      14 ResultSet rs = null;
      15 String strDbUrl
      16 = "jdbc:mysql://localhost/tutorial?user=tutorial&password=tutpwd";
      17 try {
      18 //開始與數據庫作查詢
      19 Class.forName("com.mysql.jdbc.Driver").newInstance();
      20 conn = DriverManager.getConnection(strDbUrl);
      21 stmt = conn.createStatement();
      22 String strSql = "SELECT * FROM R_TUT_USERS";
      23 rs = stmt.executeQuery(strSql);
      24 //把ResultSet轉化成Result
      25 Result userData = ResultSupport.toResult(rs);
      26 //當我們把結果放到某個Model bean后,就可以關閉數據庫連接了.
      27 //為了簡化,我們暫且把pageContext看作Model Bean好了!
      28 pageContext.setAttribute("userData", userData);
      29 }
      30 catch (Exception ex) {
      31 // handle any errors
      32 System.out.println("SQLException: " + ex.getMessage());
      33 }
      34 finally {
      35 try {
      36 if (rs != null) {
      37 rs.close();
      38 }
      39 if (stmt != null) {
      40 stmt.close();
      41 }
      42 if (conn != null) {
      43 conn.close();
      44 }
      45 }
      46 catch (SQLException ex) {
      47 System.out.println("SQL Exception: " + ex.getMessage());
      48 }
      49 }
      50 //DAO的邏輯結束
      51 %>
      52 <html>
      53 <head>
      54 <title>test</title>
      55 </head>
      56 <body>
      57
      58 <c:forEach items="${userData.rows}" var="user">
      59 <c:out value=‘${user.name}‘/>
      60 </c:forEach>
      61 </body>
      62 </html>

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約