论坛首页 入门技术论坛

个人总结验证登录的存储过程(oracle9.0.0.1)

浏览 2734 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-07-19  
[size=18][/size]
参加了一个学校的商业项目,项目周期历时十五天,虽然不长但是确实学到很多东西。同时终于有机会接触到oracle的DBMS觉得他正事态牛了~~~~~~~
这个项目是个酒店管理系统,
操作系统是WIN2003,
数据层实用的JSP+servlet,
数据库是oracle9.0.0.1.
学到太多东西需要总结,终于明白学习知识与学习能力的不同。
实际项目中是没有时间让你去慢慢摸索的,要求的是快速,高效的开发。
方法,理念也学到很多,但是技术是要总结的。
这次用的是包开发,将n个作用类存储过程放在同一个包内~~~~~~~
包开发的好处是,将接口统一,减少了访问数据库的频率,使系统运行效率有效提高
下面是一个验证用户登陆的存储过程
  --登录
  procedure     login(p_username in emsuser.username%type,
                      p_password in varchar2,
                      p_result   out number) as
v_password raw(128);
begin
p_result := -1;
   v_password:=emsencry(UPPER(trim(P_PASSWORD)));
    SELECT  /*+Rule*/
    COUNT(USERID) INTO p_result
     FROM EMSUSER
      WHERE UPPER(trim(USERNAME))=UPPER(trim(p_username))
        AND upper(trim(PASSWORD))=upper(trim(v_password))
        AND VALID=0;
  IF P_RESULT>0 THEN
       SELECT  /*+Rule*/
       ROLEID INTO p_result
        FROM EMSUSER
         WHERE UPPER(trim(USERNAME))=UPPER(trim(p_username))
           AND UPPER(trim(PASSWORD))=upper(trim(v_password))
           AND VALID=0;
  ELSE
P_RESULT:=-1;
  END IF;

end login; 

上面用到的128位md5加密算法是在本站上找到的。
也谢谢作者。算法如下
FUNCTION EMSENCRY (input_string IN VARCHAR2)--加密算法
RETURN VARCHAR2
IS
raw_input RAW (128):= UTL_RAW.cast_to_raw (input_string);
decrypted_raw RAW (2048);
error_in_input_buffer_length EXCEPTION;
BEGIN
DBMS_OBFUSCATION_TOOLKIT.md5 (input => raw_input,
checksum => decrypted_raw
);
RETURN LOWER (RAWTOHEX (decrypted_raw));
END;
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics