前一段时间做了个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");
}