JSP中调用Bean,然后在Bean中调用oracle存储过程

新手在写程序时,一定要胆大心细,而且要有耐心,不妥协,不懂就翻书,网上查资料,问朋友,坚决进行到底。

     最近一直凭着ASP的知识在摸索中前进,一跑坎坷,自不用说了。 言归正传。

     建立一个登录系统,要求达到以下目的。

     1、用户通过Bean来认证以及得到得到用户信息。

     2、记录用户登录信息,如用户登录次数,最后登录时间。

     3、记录操作日志。

    未解决及疑惑的问题:

    1、用户登录后的Session是否可以通过Bean来判断。

    2、通过Bean调用ORACLE存储过程,返回select后的记录集。

   操作步骤:

   1、建立用户验证Bean:

    public boolean checkUser() throws Exception {
    boolean flag=false;
    ResultSet rs=conn.executeQuery(getSql());
    if(rs.next()){
      userID        =rs.getString("userID");
      userName      =rs.getString("userName");
      userPWD       =rs.getString("userPWD");
      userUnit      =rs.getString("userUnit");
      userLoadTime  =rs.getDate("userLoadTime");
      userLoadNumeric=rs.getInt("userLoadNumber");
      flag=true;
    }
    rs.close();
    conn.closeConn();
    return flag;
  }
  

  通过返回的值判定用户是否存在。

 

 2、记录用户登录信息:

  public void changeLoginInfo(String userID) throws Exception{
    String sql="update SystemUserTable set UserLoadTime=sysdate,UserLoadNumber=UserLoadNumber+1 where userID='"+userID+"'";
    conn.executeUpdate(sql);
  }

3、记录操作日志:

第一步,建立存储过程

create or replace procedure proc_writeNote(
  description in varchar2,
  wName in varchar2,
  wIP in varchar2
  )
is
begin
  insert into Systemnote (Id,Description,Wname,Wip) values(Autoaddid.Nextval,description,wName,wIP);
  commit;
end proc_writeNote;

第二步、建立操作存储过程的方法(重写prepareCall()方法)

  public CallableStatement prepareCall(String produce){
    try {
      conn = DriverManager.getConnection(DBUrl, UserID, UserPWD);
      cstmt=conn.prepareCall(produce);
    }
    catch (SQLException ex) {
      System.err.print("prepareCall():"+ex.getMessage());
    }
    return cstmt;
  }

第三步,执行存储过程

  public void writeNote(String description,String wName,String wIP){
    String sql="{call proc_writeNote(?,?,?)}";
    try {
      CallableStatement cstmt=conn.prepareCall(sql);
      cstmt.setString(1, description);
      cstmt.setString(2,wName);
      cstmt.setString(3,wIP);
      cstmt.executeUpdate();
    }
    catch (SQLException ex) {
      System.out.print("writeNote():"+ex.getMessage());
    }
  }

posted on 2008-03-03 22:12  一江水  阅读(366)  评论(0编辑  收藏  举报