麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

你如何使用JavaBean操作數據庫?

2019-11-18 13:09:20
字體:
來源:轉載
供稿:網友

  你平時是如何使用jsp操作數據庫呢?對于jsp+javaBean模式,想必大家都已經很熟悉了,我們可以將獲取數據庫連接,查詢,更新甚至將其它的功能都封裝進javaBean----
  
  好了--下面讓我們來好好弄清楚一個問題:**你如何在JSP頁中取得DB中的數據?從javaBean中返回ResultSet,然后在JSP中枚舉嗎?假如是這樣的話,那我強烈建議你把這篇文章讀完。*^_^*
  
  用javaBean封裝數據庫操作誰不會?--對啊,大家都會,但是--假如構建一個高擴展性的“結構”?這就要用到java的相關知識了。廢話少說,我們先在Tomcat中創建一個DataSource- jdbc/Panabia,然后再創建一個java“基類”,這個類封裝了數據庫連接和連接的釋放:[程式中有相應的注解]
  
  CODE:
  
  package Panabia.db;
  
  import javax.sql.DataSource;
  import javax.naming.*;
  import java.sql.*;
  
  public class SQLFactory
  {
  
   PRivate static DataSource ds=null;
   private static Object Lock=new Object();
  
  //生成DataSource**
  public static DataSource gainDataSource(){
  try{
   if(ds==null){
    synchronized(Lock){
     if(ds==null){
      Context ctx=new InitialContext();
       ds=(DataSource)ctx.lookup(/"java:comp/env/jdbc/Panabia/");
      }
     }
    }
   }
   catch(NamingException e){e.printStackTrace();}
   return ds;
  }
  
  //生成SQL連接**
  public static synchronized Connection gainConnection(){
   Connection con=null;
   try{
   if(ds==null){
    gainDataSource();
    }
    con=ds.getConnection();
   }
   catch(SQLException e){e.printStackTrace();}
   return con;
  }
  
  //釋放SQL連接**
  public static void releaseConnection(ResultSet rs,PreparedStatement ps,Statement sql,Connection con){
  try{
    if(rs!=null)
    rs.close();
    }
    catch(SQLException e){e.printStackTrace();}
  try{
    if(ps!=null)
    ps.close();
    }
    catch(SQLException e){e.printStackTrace();}
  try{
    if(sql!=null)
    sql.close();
    }
    catch(SQLException e){e.printStackTrace();}
  try{
    if(con!=null&&!con.isClosed())
    con.close();
   }
   catch(SQLException e){e.printStackTrace();}
   }
  }
  
  大家都應該注重到了,這個類的所有的方法全部是static的,之所以這樣,主要是為了方便其它“擴展類”的調用,當然,還有其它好處--- :)
  
  好了,這個類就封裝完畢了,現在我們就可以針對不同的應用要求單獨寫javaBean了,比如一個簡單的:在JSP中列出verify表中的所有用戶名與密碼列表-
  
  該怎么做?--使用SQLFactory生成Connection,再生成Statement,再生成ResultSet--然后枚舉嗎?好象不錯,哦,等等......這樣做你難道沒有一種“非常親切”的感覺嗎?---對了,aspphp中就是如此-Faint~我們怎么又回到“原始社會”了....
  
  有沒有更好的方式?答案是肯定的,JAVA的能力是“通天”的強大,只要你能想得到,仔細看看它的API Document,就不難找出解決辦法。
  答案出來了:
  我們在查詢類中返回Iterator到JSP枚舉,而不是ResultSet。
  好了,我們的UserQuery類就產生了:
  
  CODE:
  
  package Panabia.Operate;
  
  import Panabia.db.SQLFactory;
  import java.util.*;
  import java.sql.*;
  
  public class UserQuery{
  
   private ArrayList list=null;
   private Connection con=null;
   private Statement sql=null;
   private ResultSet rs=null;
  
   public Iterator getResult(){
    try{
     con=SQLFactory.gainConnection();
     sql=con.createStatement();
     rs=sql.executeQuery(/"select * from verify/");
               //verify表只有兩個字段:username,passWord;
     list=new ArrayList();
      while(rs.next()){
       list.add(rs.getString(1));
       list.add(rs.getString(2));
        }
     }
     catch(SQLException e){e.printStackTrace();}
     finally{SQLFactory.releaseConnection(rs,null,sql,con);}
     return list.iterator();
     }
  }
  
  然后,就是在JSP頁中進行數據的枚舉:因為發現cnjbb不支持Html標簽的顯示,所以,只貼出了JSP中的全部java代碼片--
  ........
  Iterator it=UserQuery.getResult();
   while(it.hasNext()){
   out.print((String)it.next());
   }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久国产一级片 | 一本一本久久a久久精品综合小说 | 国产成人77亚洲精品www | av免费在线观看免费 | 龙的两根好大拔不出去h | 午夜精品老牛av一区二区三区 | 啪啪毛片 | 欧美不卡视频在线观看 | 超碰一区 | 性生活视频一级 | xxxxxx打针视频vk| 久久亚洲精品国产一区 | 欧美综合在线观看视频 | wankz100%videos | 毛片a片免费看 | 黄色羞羞视频在线观看 | 亚洲人成免费 | 久久久久夜色精品国产老牛91 | 91精品国产日韩91久久久久久360 | 97干在线 | 校花被肉干高h潮不断 | 亚洲一区二区三区四区精品 | 欧美精品一区二区久久 | 国产一区免费视频 | 极品五月天 | 免费在线观看午夜视频 | 免费一级特黄欧美大片勹久久网 | 羞羞视频在线免费 | 欧美一级黄色免费看 | 九九热在线免费观看视频 | 久久福利电影网 | 一级电影免费看 | 青青草成人影视 | 水多视频在线观看 | 九九热在线免费观看视频 | 国产亚洲综合精品 | 一区二区三区在线观看av | 国产精品亚洲欧美一级在线 | 一级片免费在线 | 日韩毛片免费观看 | 欧美亚洲一级 |