beer4alljdbcservice.java

来自「采用Struts框架做的网上啤酒买卖系统」· Java 代码 · 共 150 行

JAVA
150
字号
package com.cavaness.beer4all.service;

import java.util.*;
import com.cavaness.beer4all.common.exceptions.DatabaseException;
import com.cavaness.beer4all.database.ConnectionPool;
import java.sql.*;
import com.cavaness.beer4all.catalog.view.CatalogView;
import com.cavaness.beer4all.catalog.view.ItemView;
import com.cavaness.beer4all.common.view.UserView;
import com.cavaness.beer4all.common.exceptions.InvalidLoginException;

public class Beer4AllJdbcService implements Beer4AllService{
  public Beer4AllJdbcService() {
  }

  public List getFeaturedCatalogs() throws DatabaseException {
    ConnectionPool pool=null;
    Connection con=null;
    ArrayList catalogs=new ArrayList();
    try
    {
      pool=ConnectionPool.getInstance();
      con=pool.getConnection();

      PreparedStatement pstmt=con.prepareStatement("select id,name from catalog");
      ResultSet rs=pstmt.executeQuery();
      while(rs.next())
      {
        CatalogView view = new CatalogView();
        view.setOid(new Integer(rs.getInt("id")));
        view.setName(rs.getString("name"));

        catalogs.add(view);
      }
      con.commit();
      return catalogs;
    }
    catch(Exception se)
    {
      se.printStackTrace();
      try{con.rollback();}catch(SQLException e){}

      throw new DatabaseException("访问数据库出错");
    }
    finally
    {
        pool.releaseConnection(con);
    }

  }

  public List getFeaturedItems() throws DatabaseException {
    ConnectionPool pool=null;
    Connection con=null;
    ArrayList items=new ArrayList();
    try
    {
      pool=ConnectionPool.getInstance();
      con=pool.getConnection();

      PreparedStatement pstmt=con.prepareStatement("select id,name,description,url,price,cid from item");
      ResultSet rs=pstmt.executeQuery();
      while(rs.next())
      {
        ItemView view = new ItemView();
        view.setOid(new Integer(rs.getInt("id")));
        view.setName(rs.getString("name"));
        view.setDescription(rs.getString("description"));
        view.setSmallUrl(rs.getString("url"));
        view.setPrice(new Double(rs.getDouble("price")));
        view.setCid(new Integer(rs.getInt("cid")));
        items.add(view);
      }
      con.commit();
      return items;
    }
    catch(Exception se)
    {
      se.printStackTrace();
      try{con.rollback();}catch(SQLException e){}

      throw new DatabaseException("访问数据库出错");
    }
    finally
    {
        pool.releaseConnection(con);
    }

  }

  public UserView authenticate(String username, String password) throws DatabaseException,InvalidLoginException{
    ConnectionPool pool=null;
    Connection con=null;
    UserView userView=null;
    try
    {
      pool=ConnectionPool.getInstance();
      con=pool.getConnection();

      PreparedStatement pstmt=con.prepareStatement("select id,firstname,lastname from user where username=? and password=?");
      pstmt.setString(1,username);
      pstmt.setString(2,password);
      ResultSet rs=pstmt.executeQuery();
      if(rs.next())
      {
        userView=new UserView();
        userView.setOid(new Integer(rs.getInt("id")));
        userView.setFirstName(rs.getString("firstname"));
        userView.setLastName(rs.getString("lastname"));

        con.commit();
        return userView;
      }
      else
      {
          throw new InvalidLoginException("非法的用户名与密码");
      }
    }
    catch(SQLException se)
    {
      se.printStackTrace();
      try{con.rollback();}catch(SQLException e){}

      throw new DatabaseException("访问数据库出错");
    }
    finally
    {
        pool.releaseConnection(con);
    }
  }

  public void logout(String email) {
  }

  public ItemView getItemById(String itemId) throws DatabaseException{
    ItemView item =  new ItemView();
    Integer id=Integer.valueOf(itemId);
    for ( int i=0 ; i<getFeaturedItems().size();i++)
    {
      if(((ItemView)(getFeaturedItems().get(i))).getOid().equals(id) ){
        item=(ItemView)(getFeaturedItems().get(i));
      }
    }
    return item;

  }


}

⌨️ 快捷键说明

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