📄 bookorderimpl.java
字号:
// Fig. 15.17: BookOrderImpl.java// Class BookOrderImpl is the implementation of the BookOrder// Web service, which determines the price of a book, based on// that book's ISBN and the quantity of books to order.package com.deitel.jws1.services;// Java core packagesimport java.io.*;import java.util.*;import java.sql.*;public class BookOrderImpl implements com.deitel.jws1.services.BookOrder { private Connection connection; // connection to database // constructor to initialize database connection public BookOrderImpl() { // load JDBC driver and establish connection to database try { // obtain URL of properties file java.net.URL propertyURL = getClass().getResource( "bookStock.properties" ); // load properties file Properties databaseProperties = new Properties(); databaseProperties.load( new FileInputStream( propertyURL.getPath() ) ); // load JDBC driver Class.forName( databaseProperties.getProperty( "jdbcDriver" ) ); // establish database connection connection = DriverManager.getConnection( databaseProperties.getProperty( "databaseURI" ) ); } // handle exception if database driver does not exist catch ( ClassNotFoundException classNotFoundException ) { classNotFoundException.printStackTrace(); } // handle exception in making Connection catch ( SQLException sqlException ) { sqlException.printStackTrace(); } // handle exception in loading properties file catch ( IOException ioException ) { ioException.printStackTrace(); } } // end constructor // obtain price of book based on book's ISBN and quantity public double orderBook( String ISBN, int quantity ) { // detemine book availability, then determine price try { // SQL query to database Statement statement = connection.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY ); // make query to determine number of available books ResultSet resultSet = statement.executeQuery( "SELECT" + " quantity, price FROM books WHERE isbn = " + ISBN ); int availableBookCount = 0; // obtain quantity associated with isbn from database if ( resultSet != null ) { resultSet.next(); availableBookCount = resultSet.getInt( "quantity" ); } // determine whether quantity exceeds number of // available books in database if ( availableBookCount < quantity ) { statement.close(); return -1; } else { // determine price for one book double pricePerBook = resultSet.getDouble( "price" ); int newQuantity = availableBookCount - quantity; // update database to decrement number of books statement.execute( "UPDATE books " + "SET quantity = " + newQuantity + " WHERE isbn = " + ISBN ); statement.close(); return pricePerBook * quantity; } } // handle exception in executing Statement catch ( SQLException sqlException ) { sqlException.printStackTrace(); return -1; } } // end method orderBook } // end class BookPriceImpl
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -