<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 艾波
    嗯 謝謝指教@來如風
      回復  更多評論
      

    主站蜘蛛池模板: 一个人免费观看视频在线中文 | 亚洲中文久久精品无码ww16| 国产精品久久亚洲不卡动漫| 91九色精品国产免费| 亚洲成无码人在线观看| 91麻豆最新在线人成免费观看| 亚洲熟妇av一区| 国产无人区码卡二卡三卡免费 | 日产久久强奸免费的看| 免费在线观看理论片| 一级特黄录像免费播放中文版| 亚洲AV日韩精品一区二区三区 | 国产亚洲精品仙踪林在线播放| 日本一区免费电影| 日亚毛片免费乱码不卡一区 | 亚洲国产成人91精品| 最新欧洲大片免费在线| 亚洲精品人成网线在线播放va | 亚洲一区二区三区高清| 免费国产成人高清在线观看网站| 久久狠狠爱亚洲综合影院| 永久免费观看的毛片的网站| 久久亚洲精品高潮综合色a片| 免费国产在线观看老王影院| 久久久精品视频免费观看 | 亚洲视频在线观看不卡| 我们的2018在线观看免费高清| 亚洲伊人色一综合网| 四虎影院永久免费观看| 女同免费毛片在线播放| 亚洲国产精品成人精品软件 | 中文字幕乱码一区二区免费| 亚洲黄色在线观看| 欧洲精品免费一区二区三区| 国产VA免费精品高清在线| 亚洲色欲或者高潮影院| 国产免费小视频在线观看| 国产一区二区三区免费| 亚洲一久久久久久久久| 亚洲av中文无码乱人伦在线r▽ | 猫咪免费观看人成网站在线|