學習下一節:登入界面和功能的實作
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()方法擷取密碼,将資料庫中的密碼和使用者輸入的密碼比對,看看能不能比對上,就是這個思路。
好,接下下來需要我們去實作視圖層的内容,然後根據視圖層的操作控制整個業務邏輯。
學習下一節:登入界面和功能的實作