Java调用mysql储存过程实现登录

前一段时间做了个C#实训项目,由于数据库是使用sql server 写的储存过程,但是Java项目想使用mysql,但是没有使用过mysql, 去百度了一堆资料但是不如自己动手做一下。
每个数据库储存过程都有区别,我感觉储存过程的移植性很差,存储过程几乎需要重写

储存过程创建不多说,mysql客户端很多,直接上储存过程

DELIMITER $$

USE `fais`$$

DROP PROCEDURE IF EXISTS `frm_login`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `frm_login`(IN User_Code1 NVARCHAR(30),IN User_PassWord1 VARCHAR(200))
BEGIN
IF(EXISTS ( SELECT User_ID FROM SYS_User  WHERE User_Code=User_Code1 ))
THEN
	IF (EXISTS ( SELECT User_ID FROM SYS_User  WHERE User_Code=User_Code1 AND User_PassWord= User_PassWord1 ))
	THEN
		 IF (EXISTS(SELECT User_ID FROM SYS_User WHERE User_Code=User_Code1 
		 AND  User_PassWord=User_PassWord1  AND (SYS_User.User_Authorization_Stop IS NULL 
		 OR SYS_User.User_Authorization_Stop>=CURRENT_TIMESTAMP()) ))
		 THEN     
		      SELECT  User_ID,User_Code,User_Name  FROM SYS_User
		      WHERE User_Code=User_Code1 AND User_PassWord=User_PassWord1;
		ELSE
		SELECT -3;/*时间授权已过*/
	END IF;
	ELSE
	SELECT -2;/* 密码不正确*/
	END IF;
ELSE
SELECT -1;/*账户不存在*/
END IF;
    END$$

DELIMITER ;

Java代码
jdbc连接数据库不多说,百度一堆

dao 数据库操作接口

public interface IUserDao {
//数据库操作接口
	public UserPo login(String User_Code, String User_PassWord);
}

dao 数据库操作接口

public class UserDaoimpl  implements IUserDao{
	//Jdbc
   private Connection conn=null;
   private PreparedStatement ps=null;
   private ResultSet  rs=null;
   //调用储存过程方法
   private String login="{CALL frm_login (?,?)}";
   
	
	@Override
	public UserPo login(String User_Code, String User_PassWord) {
		// TODO Auto-generated method stub
		UserPo user=null;
		try {
			conn=Dbuilt.getConnection();
			ps=conn.prepareStatement(login);
			//参数 
			ps.setString(1, User_Code);
			ps.setString(2, User_PassWord);
			//执行Sql语句
			rs=ps.executeQuery();
			
			user = new UserPo();
			int i=0;
			//判断有没有下一列
			rs.next();
			//判断储存过程是否大于0
			if ((i=rs.getInt(1))>0) {
			     //获取值 
					user.setUser_Code(rs.getString("User_Code"));
					user.setUser_Name(rs.getString("User_Name"));
			
			}
			else {
				//返回储存过程的值
				user.setUser_ID(i);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			//关闭流
		}finally{
			Dbuilt.close(conn, ps, rs);
		}
		
		
		return user;
	}

}

service 服务层的接口

public interface IUservice {
	//放服务层的接口
public UserPo login(String User_Code, String User_PassWord);
}

service 实现服务层的接口

public class IUserviceimpl implements IUservice{
    //实现服务接口
	private IUserDao userDao= new UserDaoimpl();
	
	@Override
	public UserPo login(String User_Code, String User_PassWord) {
		// TODO Auto-generated method stub
		return userDao.login(User_Code, User_PassWord);
	}

}

servlet 代码

             IUservice iUservice=new IUserviceimpl();
			 UserPo DbUser=iUservice.login(User_Code, User_PassWord); 
			// System.out.println(DbUser.getUser_ID());
			 int hh= DbUser.getUser_ID();
			 if (hh>0) {
				
			}else if (hh==-1) {
				UIManager.put("OptionPane.messageFont", new FontUIResource(new Font("宋体", Font.ITALIC, 20)));
				JOptionPane.showMessageDialog(null, "账号不存在");
				response.sendRedirect("../index.jsp");
			}else if (hh==-2) {
				UIManager.put("OptionPane.messageFont", new FontUIResource(new Font("宋体", Font.ITALIC, 20)));
				JOptionPane.showMessageDialog(null, "密码错误");
				response.sendRedirect("../index.jsp");
			}else if (hh==-3) {
				UIManager.put("OptionPane.messageFont", new FontUIResource(new Font("宋体", Font.ITALIC, 20)));
				JOptionPane.showMessageDialog(null, " 授权时间已过");
				response.sendRedirect("../index.jsp");
			}
			 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值