悟心

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

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

          主站蜘蛛池模板: 堆龙德庆县| 伽师县| 富源县| 镇巴县| 全州县| 岳池县| 淮北市| 雷州市| 榆社县| 丹江口市| 黄浦区| 长沙县| 嘉鱼县| 水富县| 贵阳市| 八宿县| 珠海市| 南充市| 商城县| 五常市| 乌拉特后旗| 集贤县| 同江市| 堆龙德庆县| 察雅县| 广东省| 汶上县| 漠河县| 达州市| 大田县| 温宿县| 竹山县| 克拉玛依市| 德阳市| 佛教| 托克托县| 安顺市| 仲巴县| 佛坪县| 运城市| 松桃|