天天看點

【資料庫篇】——7.dao包中實作對資料庫的操作設計1.簡要說明2.UsersDao.java

                                                 學習下一節:登入界面和功能的實作

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()方法擷取密碼,将資料庫中的密碼和使用者輸入的密碼比對,看看能不能比對上,就是這個思路。

好,接下下來需要我們去實作視圖層的内容,然後根據視圖層的操作控制整個業務邏輯。

                                                 學習下一節:登入界面和功能的實作