<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    悟心

    成功不是將來才有的,而是從決定去做的那一刻起,持續累積而成。 上人生的旅途罷。前途很遠,也很暗。然而不要怕。不怕的人的面前才有路。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      93 隨筆 :: 1 文章 :: 103 評論 :: 0 Trackbacks

     

    BaseDao

     package com.common;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;

    public class Common implements ICommon {

     //driver
     String classStr="oracle.jdbc.driver.OracleDriver";
     //connection
     String connStr="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
     //username
     String name="lw";
     //password
     String password="admin";
     

     //transact add/delete/update method
     public boolean tsg(String sql){
      boolean b=false;
      try {
       //loading driver
       Class.forName(classStr);
       //create connection
       Connection conn=DriverManager.getConnection(connStr,name,password);
       //create transact SQL object
       Statement sta=conn.createStatement();
       //transact SQL
       sta.executeUpdate(sql);
       //close sta
       sta.close();
       //close conn
       conn.close();
       //set b true
       b=true;
      } catch (SQLException e) {
       e.printStackTrace();
      } catch (ClassNotFoundException e) {
       e.printStackTrace();
      }
      return b;
     }
     
     //transact select
     public ResultSet select(String sql){
      try {
       Class.forName(classStr);
       
       Connection conn=DriverManager.getConnection(connStr,name,password);
       
       Statement sta=conn.createStatement();
       
       ResultSet rs=sta.executeQuery(sql);
       
       return rs;
      } catch (Exception e) {
       // TODO: handle exception
      }
      return null;
     }
     
    }


    DemoDaoImpl

    package com.demo.dao;

    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;

    import com.demo.bean.Dept;
    import com.demo.common.BaseDaoImpl;
    import com.demo.common.IBaseDao;

    public class DemoDaoImpl implements IDemoDao {

     private IBaseDao baseDao = new BaseDaoImpl();

     public Dept queryDemoById(int id) {

      String sql = "select * from dept where did=" + id;

      ResultSet rs = baseDao.query(sql);

      Dept dept = new Dept();

      try {
       while (rs.next()) {
        dept.setDid(rs.getInt(1));
        dept.setDname(rs.getString(2));
        dept.setParentid(rs.getInt(3));
       }
      } catch (SQLException e) {
       e.printStackTrace();
      }

      return dept;
     }

     public List<Dept> queryDemos(int id) {

      String sql = "select * from dept where parentid=" + id;

      ResultSet rs = baseDao.query(sql);

      List<Dept> list = new ArrayList<Dept>();

      try {
       while (rs.next()) {
        Dept dept = new Dept();
        dept.setDid(rs.getInt(1));
        dept.setDname(rs.getString(2));
        dept.setParentid(rs.getInt(3));
        list.add(dept);
       }
      } catch (SQLException e) {
       e.printStackTrace();
      }

      return list;
     }

     public static void main(String[] args) {
      IDemoDao dao = new DemoDaoImpl();
      Dept d = dao.queryDemoById(1);
      System.out.println(d);
     }
    }

    DemoServImpl

    package com.demo.serv;

    import java.util.List;

    import com.demo.bean.Dept;
    import com.demo.dao.DemoDaoImpl;
    import com.demo.dao.IDemoDao;

    public class DemoServImpl implements IDemoServ {

     private IDemoDao demoDao = new DemoDaoImpl();

     private static String htmlStr="";
     
     private void search(int id) {
      List<Dept> list = demoDao.queryDemos(id);
      htmlStr+="<ul>";
      for (Dept dept : list) {
       htmlStr+="<li>";
       htmlStr+="<a href='"+dept.getDid()+"'>"+dept.getDname()+"</a>";
       htmlStr+="</li>";
       search(dept.getDid());
      }
      htmlStr+="</ul>";
     }
     
     public String resHTML(int id){
      htmlStr="";
      search(id);
      return htmlStr;
     }
    }

    DemoServlet

     

    package com.demo.servlet;

    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import com.demo.serv.DemoServImpl;
    import com.demo.serv.IDemoServ;

    public class DemoServlet extends HttpServlet {

     private IDemoServ demoserv = new DemoServImpl();

     public void doGet(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      doPost(request, response);
     }

     public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      request.setCharacterEncoding("utf-8");
      request.setCharacterEncoding("utf-8");
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      int id = Integer.parseInt(request.getParameter("id"));
      String reshtml = demoserv.resHTML(id);
      out.write(reshtml);
      out.flush();
      out.close();
     }

    }

    posted on 2009-11-15 00:06 艾波 閱讀(2288) 評論(10)  編輯  收藏 所屬分類: Application

    評論

    # re: 遞歸樹(新思路)[JDBC+Servlet+javaBean] 2009-11-16 09:59 father
    什嗎玩意!!!!!  回復  更多評論
      

    # re: 遞歸樹(新思路)[JDBC+Servlet+javaBean](新手版高手勿進) 2009-11-18 13:11 艾波
    你是高手嘛,當然不屑啊@father
      回復  更多評論
      

    # re: 遞歸樹(新思路)[JDBC+Servlet+javaBean](新手版高手勿進)[未登錄] 2009-11-18 16:37 onkyo
    這樣遞歸錯是沒錯,但是太過理想化了, 在實際應用中基本很少能用上這樣的代碼。

    設想一下比如一張表保存了所有工料信息(article-component) 里面有100萬條數據記錄。 如果使用樓主的算法耗時過長而且很可能out of memory。

    其實就用一句SQL就可以了,不需要在程序里面遞歸。
    既然樓主用了Oracle那就了解一下start with connect by 的用法吧  回復  更多評論
      

    # re: 遞歸樹(新思路)[JDBC+Servlet+javaBean](新手版高手勿進) 2009-11-18 20:48 艾波
    @onkyo
    嗯 學習了 多謝指教啊!我有個問題想問你,要是不在oracle中,在sql2005或者mysql中怎么弄啊  回復  更多評論
      

    # re: 遞歸樹(新思路)[JDBC+Servlet+javaBean](新手版高手勿進)[未登錄] 2009-11-18 22:41 onkyo
    在postgresql 數據庫的源代碼contrib文件夾下面, 有一個模塊:tablefunc

    postgresql 把 connectby 做成了一個函數。

    對于sql2005和mysql你可以參考一下, 自己寫一個函數。

    在數據庫里面做遞歸比在程序里面至少快2個數量級  回復  更多評論
      

    # re: 遞歸樹(新思路)[JDBC+Servlet+javaBean](新手版高手勿進) 2009-11-18 23:13 艾波
    @onkyo
    嗯 謝謝啊 是不是在數據庫里面寫個存儲過程來處理這個啊  回復  更多評論
      

    # re: 遞歸樹(新思路)[JDBC+Servlet+javaBean](新手版高手勿進)[未登錄] 2009-11-19 14:07 onkyo
    是的.

    如何寫這個儲存過程:
    MySQL 可以參考 http://qieqie.javaeye.com/blog/115293
    SQL2005 可以參考 http://technet.microsoft.com/de-de/library/cc917573%28en-us%29.aspx  回復  更多評論
      

    # re: 遞歸樹(新思路)[JDBC+Servlet+javaBean](新手版高手勿進) 2009-11-21 08:46 艾波
    @onkyo
    嗯 多謝指教 太感謝你了 我可不可以加你QQ啊 我想多向你請教些技術上面的問題  回復  更多評論
      

    # re: 遞歸樹(新思路)[JDBC+Servlet+javaBean](新手版高手勿進) 2010-01-15 21:25 來如風
    不要一次全加載,用懶加載  回復  更多評論
      

    # re: 遞歸樹(新思路)[JDBC+Servlet+javaBean](新手版高手勿進) 2010-01-18 16:36 艾波
    嗯 謝謝指教@來如風
      回復  更多評論
      

    主站蜘蛛池模板: 中文字幕人成无码免费视频| 国产免费丝袜调教视频| 凹凸精品视频分类国产品免费| 国产 亚洲 中文在线 字幕 | 日本免费A级毛一片| 亚洲一区二区视频在线观看| 日韩免费高清一级毛片| 亚洲欧洲久久久精品| 国产视频精品免费视频| 亚洲AV无码一区二区乱孑伦AS| 亚洲精品免费视频| 亚洲一区二区三区四区视频| 最近免费中文字幕大全视频| 亚洲日韩av无码中文| 免费人成在线观看视频播放| 九九免费久久这里有精品23| 亚洲日韩精品无码一区二区三区| 久久99精品国产免费观看| 亚洲福利电影在线观看| 青青草国产免费久久久91| 免费国产草莓视频在线观看黄| 中文字幕亚洲一区二区va在线| 永久免费av无码网站yy| 亚洲国产精品专区| 国产免费私拍一区二区三区 | 亚洲精品无码成人| 亚洲日韩国产一区二区三区| 久草免费福利视频| 亚洲成年网站在线观看| 亚洲美女高清一区二区三区 | 女人18毛片水最多免费观看| 美女视频免费看一区二区| 亚洲AV无码精品色午夜果冻不卡| 男女超爽刺激视频免费播放 | 久久人午夜亚洲精品无码区| 国产午夜亚洲精品午夜鲁丝片| 在线观看免费视频资源| 色窝窝亚洲AV网在线观看| 亚洲Av永久无码精品三区在线| 免费观看成人毛片a片2008| 一级一黄在线观看视频免费|