1.简要说明
之前在需求分析阶段我们已经详细说明了我们要实现的功能是那些,接下来我们就要在我们的dao包中实现这两个功能。
还要说明的一点就是,在这里我们就用到了之前util包下的工具类DBUtil.java和model包下的User.java,这里体现了用户的操作和数据库关联的地方。从代码中你可以体会出来。
2.UsersDao.java
package com.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.model.User;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;
import com.util.DBUtil;
/*
* 2018.4.10
* 用于数据的操作:增加数据和查询单条数据
*/
public class UsersDao {
//增加数据
public void add(User u) throws SQLException {
DBUtil db=new DBUtil();
Connection coon=db.getConnection();
//获取用户的信息
String name=u.getName();
String password=u.getPassword();
//将用户信息加入到数据库中
String sql="insert into Users (name,password) "
+"values (?,?)";
PreparedStatement prpe=(PreparedStatement) coon.prepareStatement(sql);
prpe.setString(1, name);
prpe.setString(2, password);
prpe.execute();
System.out.println("add access!");
}
/*
* 获取单条数据数据
* 如果name能查到,就将数据库保存的name和password返回到result中返回
* 如果name没有查到,password中的内容为空,照样返回result中
*/
public User get(String name) throws SQLException {
User result=new User();
DBUtil db=new DBUtil();
Connection conn=db.getConnection();
String sql="" +
" select * from Users" +
" where name=? ";
PreparedStatement ptmt=(PreparedStatement) conn.prepareStatement(sql);
ptmt.setString(1, name);
ResultSet rs=ptmt.executeQuery();
while(rs.next()){
String username=rs.getString("name");
String password="";
if(name.equals(username))
{
password=rs.getString("password");
System.out.println("数据查询成功");
}
result.setName(name);
result.setPassword(password);
}
return result;
}
}
上面两个方法就实现了我们注册和查询单个用户信息的功能,那么你可能疑问,登录功能在哪里呢?
在这里,我的思路是这样的:登录功能需要我们根据name查询到数据库中的一条记录,我们将这个记录保存到了一个user对象中返回,然后呢我们就可以通过user对象的getPassword()方法获取密码,将数据库中的密码和用户输入的密码匹配,看看能不能匹配上,就是这个思路。
好,接下下来需要我们去实现视图层的内容,然后根据视图层的操作控制整个业务逻辑。