亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dbmerchandise.java

?? Java網(wǎng)絡(luò)應(yīng)用編程入門代碼(朱喜福) 我覺得很好用
?? JAVA
字號(hào):
package myshop.db;

import myshop.Merchandise;
import java.sql.Connection;
import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.sql.Timestamp;
import myshop.Category;

public abstract class DBMerchandise {
  private DBMerchandise() {
  }

  // 定義每頁顯示數(shù)量的常量。有助于將數(shù)據(jù)和程序邏輯分離。
  private static int pageSize = 3;

  /**
   * 獲得每頁顯示數(shù)量
   * @return int
   */
  public static int getPageSize() {
    return pageSize;
  }

  /**
   * 設(shè)置每頁顯示數(shù)量
   * @param pageSize 每頁顯示數(shù)量
   */
  public static void setPageSize(int pageSize) {
    DBMerchandise.pageSize = pageSize;
  }

  /**
   * 向數(shù)據(jù)庫中添加商品
   * @param m Merchandise 需要添加的商品類別。要求已經(jīng)檢驗(yàn)過名稱屬性的合法性。
   */
  public static void addMerchandise(Merchandise m) {
    Connection conn = null;
    try {
      conn = ConnectionManager.getConnection(); // 獲得數(shù)據(jù)庫連接
      PreparedStatement ps = conn.prepareStatement( // 建立PreparedStatement用于執(zhí)行SQL操作
        "INSERT INTO MERCHANDISE(NAME,PRICE,ADD_TIME,CATEGORY_ID) VALUES(?,?,?,?)");
      ps.setString(1, m.getName());
      ps.setInt(2, m.getPrice());
      // 使用Timestamp對(duì)應(yīng)數(shù)據(jù)庫日期時(shí)間字段類型
      ps.setTimestamp(3, new Timestamp(m.getAddTime().getTime()));
      ps.setInt(4, m.getCategoryId());
      ps.execute(); // 執(zhí)行SQL命令
      ps.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    } finally {
      ConnectionManager.closeConnection(conn);
    }
  }

  /**
   * 獲得全部商品名稱
   * @return Iterator 商品名稱的迭代器
   */
  public static Iterator getAllMerchandise() {
    List l = new ArrayList(); //容器類。用于存放所有符合條件的對(duì)象。
    Connection conn = null;
    try {
      conn = ConnectionManager.getConnection(); // 獲得數(shù)據(jù)連接
      PreparedStatement ps = conn.prepareStatement( // 建立Statement用于執(zhí)行SQL操作
        "SELECT ID, NAME,PRICE,ADD_TIME,CATEGORY_ID FROM MERCHANDISE");
      ResultSet rs = ps.executeQuery(); // 執(zhí)行SQL命令
      while (rs.next()) {
        l.add(new Merchandise(rs.getInt(1), rs.getString(2), rs.getInt(3),
                              rs.getTimestamp(4), rs.getInt(5)));
      }
      rs.close();
      ps.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    } finally {
      ConnectionManager.closeConnection(conn);
    }
    return l.iterator();
  }

  /**
   * 獲得一頁內(nèi)容數(shù)量的商品列表
   * @param page int 當(dāng)前所在頁數(shù)。第一頁從“1”開始
   * @param c Category 商品類別
   * @return Iterator 商品列表
   */
  public static Iterator getOnePageMerchandise(Category c, int page) {
    List l = new ArrayList(); //容器類。用于存放所有符合條件的對(duì)象。
    Connection conn = null;
    try {
      conn = ConnectionManager.getConnection(); // 獲得數(shù)據(jù)連接

      int total = DBMerchandise.getCounter(c); //存儲(chǔ)結(jié)果集的總數(shù)

      PreparedStatement ps = conn.prepareStatement( // 建立Statement用于執(zhí)行SQL操作
        "SELECT ID, NAME,PRICE,ADD_TIME,CATEGORY_ID FROM MERCHANDISE "+
        "WHERE CATEGORY_ID=? ORDER BY ID");
      ps.setInt(1, c.getId()); // 設(shè)定要查詢的類別ID
      ResultSet rs = ps.executeQuery(); // 執(zhí)行SQL命令
      int t = (page - 1) * pageSize + 1; // 將要開始的結(jié)果集行數(shù)
      if (t <= total) { // 判斷最大邊界
        rs.absolute(t); // 將結(jié)果集游標(biāo)移動(dòng)到指定行數(shù)
        do {
          //創(chuàng)建商品對(duì)象。并將對(duì)象存放到存儲(chǔ)集合中。
          l.add(new Merchandise(rs.getInt(1), rs.getString(2), rs.getInt(3),
                                rs.getTimestamp(4), rs.getInt(5)));
        } while (rs.next() && l.size() < pageSize);
      }
      rs.close();
      ps.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    } finally {
      ConnectionManager.closeConnection(conn);
    }
    return l.iterator();
  }

  /**
   * 修改商品名稱的屬性。
   * @param m Merchandise 已經(jīng)填充新屬性的商品名稱包裝類。
   */
  public static void updateMerchandise(Merchandise m) {
    Connection conn = null;
    try {
      conn = ConnectionManager.getConnection(); // 獲得數(shù)據(jù)連接

      // 使用PreparedStatement更新數(shù)據(jù)。
      // 每個(gè)"?"代表一個(gè)占位符,在執(zhí)行之前要一一設(shè)置各占位符的內(nèi)容
      PreparedStatement ps = conn.prepareStatement(
        "UPDATE MERCHANDISE SET NAME=?,PRICE=?,ADD_TIME=?,CATEGORY_ID=? WHERE ID=?");

      // 設(shè)置第一個(gè)占位符的內(nèi)容。設(shè)置內(nèi)容類型為String
      ps.setString(1, m.getName());
      // 設(shè)置第二個(gè)占位符的內(nèi)容。設(shè)置內(nèi)容類型為int
      ps.setInt(2, m.getPrice());
      // 設(shè)置第三個(gè)占位符的內(nèi)容。設(shè)置內(nèi)容類型為Timestamp
      ps.setTimestamp(3, new Timestamp(m.getAddTime().getTime()));
      // 設(shè)置第四個(gè)占位符的內(nèi)容。設(shè)置內(nèi)容類型為int
      ps.setInt(4, m.getCategoryId());
      // 設(shè)置第五個(gè)占位符的內(nèi)容。設(shè)置內(nèi)容類型為int
      ps.setInt(5, m.getId());
      ps.executeUpdate(); //執(zhí)行更新操作
      ps.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    } finally {
      ConnectionManager.closeConnection(conn);
    }
  }

  /**
   * 獲得指定ID的商品名稱對(duì)象
   * @param id int 商品名稱ID
   * @return Merchandise 商品名稱對(duì)象
   */
  public static Merchandise getMerchandise(int id) {
    Merchandise m = null;
    Connection conn = null;
    try {
      conn = ConnectionManager.getConnection(); // 獲得數(shù)據(jù)連接

      // 建立PreparedStatement用于執(zhí)行SQL操作
      PreparedStatement ps = conn.prepareStatement(
        "SELECT ID, NAME,PRICE,ADD_TIME,CATEGORY_ID FROM MERCHANDISE WHERE ID=?");
      ps.setInt(1, id); // 設(shè)置第一個(gè)占位符的內(nèi)容
      ResultSet rs = ps.executeQuery(); // 執(zhí)行SQL命令
      if (rs.next()) { //因?yàn)槊總€(gè)類別的ID是唯一的,所以只返回一個(gè)結(jié)果既可
        m = new Merchandise(rs.getInt(1), rs.getString(2), rs.getInt(3),
                            rs.getTimestamp(4), rs.getInt(5));
      }
      rs.close();
      ps.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    } finally {
      ConnectionManager.closeConnection(conn);
    }
    return m;
  }

  /**
   * 刪除指定ID的商品類別
   * @param id int 商品類別ID
   */
  public static void deleteMerchandise(int id) {
    Connection conn = null;
    try {
      conn = ConnectionManager.getConnection(); // 獲得數(shù)據(jù)連接

      // 建立PreparedStatement用于執(zhí)行SQL操作
      PreparedStatement ps = conn.prepareStatement(
        "DELETE FROM MERCHANDISE WHERE ID=?");
      ps.setInt(1, id); // 設(shè)置第一個(gè)占位符的內(nèi)容
      ps.executeUpdate();
      ps.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    } finally {
      ConnectionManager.closeConnection(conn);
    }
  }

  /**
   * 獲得指定類別下的商品集合
   * @param c Category 商品類別
   * @return Iterator 商品集合
   */
  public static Iterator getMerchandises(Category c) {
    List l = new ArrayList(); //容器類。用于存放所有符合條件的對(duì)象。
    Connection conn = null;
    try {
      if(c != null) {
        conn = ConnectionManager.getConnection(); // 獲得數(shù)據(jù)連接
        PreparedStatement ps = conn.prepareStatement( // 建立Statement用于執(zhí)行SQL操作
          "SELECT ID,NAME,PRICE,ADD_TIME,CATEGORY_ID FROM MERCHANDISE " +
          "WHERE CATEGORY_ID=?");
        ps.setInt(1, c.getId());
        ResultSet rs = ps.executeQuery(); // 執(zhí)行SQL命令
        while (rs.next()) {
          l.add(new Merchandise(rs.getInt(1), rs.getString(2), rs.getInt(3),
                                rs.getTimestamp(4), rs.getInt(5)));
        }
        rs.close();
        ps.close();
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    } finally {
      ConnectionManager.closeConnection(conn);
    }
    return l.iterator();
  }

  /**
   * 獲得指定商品類別下的商品數(shù)量
   * @param c Category 商品類別
   * @return int
   */
  public static int getCounter(Category c) {
    int total = 0; //存儲(chǔ)結(jié)果集的總數(shù)
    Connection conn = null;
    try {
      conn = ConnectionManager.getConnection(); // 獲得數(shù)據(jù)連接

      // 建立PreparedStatement用于執(zhí)行SQL操作
      PreparedStatement ps2 = conn.prepareStatement(
        "SELECT COUNT(*) FROM MERCHANDISE WHERE CATEGORY_ID=? ");
      ps2.setInt(1, c.getId()); // 設(shè)定要查詢的類別ID
      ResultSet rs2 = ps2.executeQuery();
      if (rs2.next()) {
        total = rs2.getInt(1);
      }
      rs2.close();
      ps2.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    } finally {
      ConnectionManager.closeConnection(conn);
    }
    return total;
  }

  /**
   * 返回指定商品類別在指定的每頁數(shù)量下的最大頁號(hào)
   * @param c Category 商品類別
   * @return int 最大頁號(hào)
   */
  public static int getMaxPageNumber(Category c) {
    return DBMerchandise.getCounter(c) % DBMerchandise.pageSize == 0 ?
      DBMerchandise.getCounter(c) / DBMerchandise.pageSize :
      (DBMerchandise.getCounter(c) / DBMerchandise.pageSize) + 1;
  }

  public static void main(String[] args) {
    DBMerchandise.setPageSize(3);
    Category c = DBCategory.getCategory(1);
    boolean b ;
    for (int i=1; i<10; i++) {
      b = false;

      for (Iterator it = DBMerchandise.getOnePageMerchandise(c, i); it.hasNext(); ) {
        System.out.println(((Merchandise) it.next()).getId());
        b = true;
      }
      if (b)
        System.out.println("p"+i+"=="+i);
    }
    System.out.println("maxPage=="+getMaxPageNumber(c));
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人动漫一区二区| 青青草国产精品97视觉盛宴| 国产经典欧美精品| 日本一区二区综合亚洲| 国产高清久久久久| 最新国产成人在线观看| 91精品1区2区| 视频精品一区二区| 26uuu久久综合| 成人高清免费在线播放| 有码一区二区三区| 欧美日韩精品一区二区三区| 免费高清视频精品| 亚洲欧美日韩在线不卡| 国产精品久久精品日日| 青青草国产成人av片免费| 欧美一级片在线| 狠狠色丁香婷综合久久| 国产欧美日韩视频一区二区| 91视频精品在这里| 日韩在线卡一卡二| 日本一区二区三区国色天香| 色婷婷av一区二区| 男人的天堂久久精品| 国产欧美日韩一区二区三区在线观看| 色综合色狠狠天天综合色| 日本伊人午夜精品| 国产精品欧美经典| 91精品国产91久久久久久最新毛片 | 亚洲一卡二卡三卡四卡| 欧美精品乱人伦久久久久久| 韩国欧美国产一区| 亚洲人成网站在线| 欧美成人精品福利| 91美女视频网站| 国产精品自拍毛片| 亚洲第一激情av| 国产精品久久久久三级| 欧美一区二区在线免费播放| 成人av网站在线观看免费| 免费成人在线观看视频| 亚洲激情五月婷婷| 国产午夜精品一区二区三区嫩草| 日本久久一区二区三区| 国产高清成人在线| 久久国产剧场电影| 亚洲一区二区精品视频| 国产精品每日更新在线播放网址| 欧美一级在线视频| 欧美视频日韩视频| 北条麻妃国产九九精品视频| 国精产品一区一区三区mba视频 | 麻豆成人91精品二区三区| 1000部国产精品成人观看| 91精品国产一区二区人妖| 91亚洲男人天堂| 懂色av中文一区二区三区| 麻豆成人久久精品二区三区小说| 亚洲成人黄色影院| 亚洲精品日日夜夜| 中文字幕在线不卡国产视频| 欧美国产日本韩| 国产亚洲人成网站| 精品久久久久久无| 日韩欧美一级在线播放| 欧美男男青年gay1069videost| 色综合久久综合网| av不卡免费在线观看| 成人精品国产福利| 成人激情校园春色| 成人免费视频视频| 99热这里都是精品| 成人av手机在线观看| 成人性生交大合| 播五月开心婷婷综合| www.亚洲免费av| av在线这里只有精品| 不卡av在线免费观看| 91在线视频官网| 99久久精品免费精品国产| 成人av高清在线| 91丝袜呻吟高潮美腿白嫩在线观看| 蜜桃久久av一区| 午夜av一区二区| 视频一区免费在线观看| 麻豆精品久久久| 日韩一区二区在线观看| 国产盗摄女厕一区二区三区| 国产裸体歌舞团一区二区| 国产一区二区按摩在线观看| 国产精品一区不卡| www.亚洲国产| 色婷婷综合激情| 欧美日韩一级二级| 91精品国产综合久久婷婷香蕉| 日韩午夜激情视频| 久久久久久免费毛片精品| 国产欧美在线观看一区| 亚洲欧美日韩电影| 日韩va欧美va亚洲va久久| 国产一区二区免费视频| 不卡av在线网| 欧美日韩国产系列| 久久亚洲精华国产精华液 | 国产亚洲欧美色| 亚洲丝袜制服诱惑| 亚洲成人黄色影院| 久草这里只有精品视频| 高清不卡一区二区在线| 在线精品国精品国产尤物884a| 欧美精品 日韩| 国产视频一区在线播放| 亚洲午夜av在线| 国产成人在线免费观看| 欧美四级电影在线观看| 欧美xingq一区二区| 久久久久久97三级| 日韩成人一区二区三区在线观看| 日韩免费电影一区| 欧美96一区二区免费视频| 麻豆中文一区二区| 99国产麻豆精品| 欧美一区国产二区| 最近中文字幕一区二区三区| 蜜臀av亚洲一区中文字幕| 欧美日韩在线直播| 欧美tickling挠脚心丨vk| 亚洲视频免费在线观看| 美女网站色91| www.成人在线| 欧美大片在线观看| 亚洲五月六月丁香激情| 丁香另类激情小说| 日韩一区二区三区免费看 | 青青草97国产精品免费观看 | 日韩精品资源二区在线| 亚洲欧美日韩在线不卡| 国产一区二区看久久| 欧美精品乱码久久久久久| 国产精品入口麻豆原神| 九九久久精品视频 | 3atv一区二区三区| 亚洲欧洲av另类| 国产成人日日夜夜| 欧美成人aa大片| 蜜桃久久久久久| 欧美精品一卡两卡| 亚洲午夜久久久| 91丨九色丨蝌蚪丨老版| 国产欧美日本一区二区三区| 美女视频一区在线观看| 欧美日韩精品一区二区三区四区| 亚洲日本一区二区| 成人永久看片免费视频天堂| 久久综合给合久久狠狠狠97色69| 日韩不卡一区二区| 这里是久久伊人| 午夜激情久久久| 91精品视频网| 97久久超碰国产精品电影| 久久精品免视看| 国产一区999| 久久精品一区八戒影视| 国产自产高清不卡| 欧美xxxx老人做受| 国产精品一卡二| 久久久久久久久久久久久女国产乱 | 成人免费视频caoporn| 久久久久久97三级| 国产成人在线看| 国产精品私人自拍| 不卡av在线免费观看| 椎名由奈av一区二区三区| 99热在这里有精品免费| 亚洲啪啪综合av一区二区三区| aa级大片欧美| 一区二区三区中文字幕精品精品 | 欧美欧美午夜aⅴ在线观看| 亚洲图片欧美视频| 欧美高清你懂得| 男女男精品视频网| 欧美精品一区二区三区四区| 精品一区二区三区的国产在线播放| 欧美成人一区二区| 国产成人自拍高清视频在线免费播放 | 狠狠色狠狠色综合日日91app| 日韩欧美国产综合| 精品亚洲成a人| 国产亚洲精品久| 色婷婷久久综合| 午夜精品aaa| 欧美精品一区二区三区高清aⅴ| 国产一区二区精品久久99| 国产精品久久久99| 欧美影视一区在线| 激情五月婷婷综合| 亚洲精品视频在线看| 欧美精品一卡二卡| 国产成人啪免费观看软件 | 日韩欧美第一区|