⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bookdb.java

📁 j2ee API 开发重要工具 免费下载 欢迎使用
💻 JAVA
字号:
/* * Copyright (c) 2002 Sun Microsystems, Inc.  All rights reserved.  U.S.  * Government Rights - Commercial software.  Government users are subject  * to the Sun Microsystems, Inc. standard license agreement and  * applicable provisions of the FAR and its supplements.  Use is subject  * to license terms.   *  * This distribution may include materials developed by third parties.  * Sun, Sun Microsystems, the Sun logo, Java and J2EE are trademarks  * or registered trademarks of Sun Microsystems, Inc. in the U.S. and  * other countries.   *  * Copyright (c) 2002 Sun Microsystems, Inc. Tous droits reserves. *  * Droits du gouvernement americain, utilisateurs gouvernementaux - logiciel * commercial. Les utilisateurs gouvernementaux sont soumis au contrat de  * licence standard de Sun Microsystems, Inc., ainsi qu'aux dispositions  * en vigueur de la FAR (Federal Acquisition Regulations) et des  * supplements a celles-ci.  Distribue par des licences qui en  * restreignent l'utilisation. *  * Cette distribution peut comprendre des composants developpes par des  * tierces parties. Sun, Sun Microsystems, le logo Sun, Java et J2EE  * sont des marques de fabrique ou des marques deposees de Sun  * Microsystems, Inc. aux Etats-Unis et dans d'autres pays. */package database;import java.sql.*;import javax.sql.*;import javax.naming.*;import java.util.*;import exception.*;import cart.*;public class BookDB {  private ArrayList books;  Connection con;  private boolean conFree = true;  public BookDB () throws Exception {    try  {                			Context initCtx = new InitialContext(); 			Context envCtx = (Context) initCtx.lookup("java:comp/env");      DataSource ds = (DataSource) envCtx.lookup("jdbc/BookDB");      con =  ds.getConnection();         } catch (Exception ex) {      throw new Exception("Couldn't open connection to database: " + ex.getMessage());    }         }  public void remove () {    try {        con.close();    } catch (SQLException ex) {        System.out.println(ex.getMessage());    }  }     protected synchronized Connection getConnection() {         while (conFree == false) {            try {               wait();            } catch (InterruptedException e) {            }         }         conFree = false;         notify();         return con;    }    protected synchronized void releaseConnection() {        while (conFree == true) {            try {               wait();            } catch (InterruptedException e) {            }         }         conFree = true;         notify();   }  public Collection getBooks() throws BooksNotFoundException {    books = new ArrayList();    try {      String selectStatement = "select * " + "from books";      getConnection();      PreparedStatement prepStmt = con.prepareStatement(selectStatement);      ResultSet rs = prepStmt.executeQuery();      while (rs.next()) {        BookDetails bd = new BookDetails(rs.getString(1), rs.getString(2), rs.getString(3),           rs.getString(4), rs.getFloat(5), rs.getBoolean(6), rs.getInt(7), rs.getString(8), rs.getInt(9));        if (rs.getInt(9) > 0)          books.add(bd);      }      prepStmt.close();    } catch (SQLException ex) {      throw new BooksNotFoundException(ex.getMessage());    }	releaseConnection();    Collections.sort(books);    return books;  }  public BookDetails getBookDetails(String bookId) throws BookNotFoundException {    try {      String selectStatement = "select * " + "from books where id = ? ";      getConnection();      PreparedStatement prepStmt = con.prepareStatement(selectStatement);      prepStmt.setString(1, bookId);      ResultSet rs = prepStmt.executeQuery();      if (rs.next()) {        BookDetails bd = new BookDetails(rs.getString(1), rs.getString(2), rs.getString(3),           rs.getString(4), rs.getFloat(5), rs.getBoolean(6), rs.getInt(7), rs.getString(8), rs.getInt(9));        prepStmt.close();        releaseConnection();                        return bd;      }      else {                  prepStmt.close();        releaseConnection();        throw new BookNotFoundException("Couldn't find book: " + bookId);      }    } catch (SQLException ex) {      releaseConnection();      throw new BookNotFoundException("Couldn't find book: " + bookId + " " + ex.getMessage());    }  }  public void buyBooks(ShoppingCart cart) throws OrderException{    Collection items = cart.getItems();    Iterator i = items.iterator();    try {      getConnection();              con.setAutoCommit(false);       while (i.hasNext()) {        ShoppingCartItem sci = (ShoppingCartItem)i.next();        BookDetails bd = (BookDetails)sci.getItem();        String id = bd.getBookId();        int quantity = sci.getQuantity();        buyBook(id, quantity);      }      con.commit();      con.setAutoCommit(true);      releaseConnection();         } catch (Exception ex) {           try {            con.rollback();        releaseConnection();               throw new OrderException("Transaction failed: " + ex.getMessage());        } catch (SQLException sqx) {         releaseConnection();            throw new OrderException("Rollback failed: " + sqx.getMessage());              }            }         }  public void buyBook(String bookId, int quantity) throws OrderException {      try {      String selectStatement = "select * " + "from books where id = ? ";      PreparedStatement prepStmt = con.prepareStatement(selectStatement);      prepStmt.setString(1, bookId);      ResultSet rs = prepStmt.executeQuery();      if (rs.next()) {        int inventory = rs.getInt(9);        prepStmt.close();                      if ((inventory - quantity) >= 0) {                 String updateStatement =                  "update books set inventory = inventory - ? where id = ?";          prepStmt = con.prepareStatement(updateStatement);          prepStmt.setInt(1, quantity);          prepStmt.setString(2, bookId);          prepStmt.executeUpdate();          prepStmt.close();        } else          throw new OrderException("Not enough of " + bookId + " in stock to complete order.");      }    } catch (Exception ex) {      throw new OrderException("Couldn't purchase book: " + bookId + ex.getMessage());    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -