package dao.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import util.DBConfig;
import dao.UserDAO;
import entity.User;

public class UserDAOImpl implements UserDAO {

	public void addUser(User user) {
		Connection conn = null;
		PreparedStatement ps = null;
		
		try {
			conn = DBConfig.getConnection();
			ps = conn.prepareStatement("insert into t_user(username,name,password,sex) values(?,?,?,?)");
			ps.setString(1, user.getUsername());
			ps.setString(2, user.getName());
			ps.setString(3, user.getPassword());
			ps.setString(4, user.getSex());
			ps.executeUpdate();
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBConfig.close(ps, conn);
		}
	}

	public void deleteUserByID(int ID) {
		Connection conn = null;
		PreparedStatement ps = null;
		try {
			conn = DBConfig.getConnection();
			ps = conn.prepareStatement("delete from t_user where id=?");
			ps.setInt(1, ID);
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBConfig.close(ps, conn);
		}
	}

	public void updateUser(User user) {
		Connection conn = null;
		PreparedStatement ps = null;
		try {
			conn = DBConfig.getConnection();
			ps = conn.prepareStatement("update t_user set username=?,name=?,password=?,sex=? where id=?");
			ps.setString(1, user.getUsername());
			ps.setString(2, user.getName());
			ps.setString(3, user.getPassword());
			ps.setString(4, user.getSex());
			ps.setInt(5, user.getId());
			ps.executeUpdate();
			
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			DBConfig.close(ps, conn);
		}
	}
	
//	public User findUserByID(int ID) {
//		Connection conn = null;
//		PreparedStatement ps = null;
//		ResultSet rs = null;
//		User user = null;
//		try {
//			conn = DBConfig.getConnection();
//			ps = conn.prepareStatement("select * from t_user where id=?");
//			ps.setInt(1, ID);
//			rs = ps.executeQuery();
//			user = new User();
//			user.setId(rs.getInt("id"));
//			user.setUsername(rs.getString("username"));
//			user.setName(rs.getString("name"));
//			user.setPassword(rs.getString("password"));
//			user.setSex(rs.getString("sex"));
//			
//		} catch(Exception e) {
//			e.printStackTrace();
//		} finally {
//			try {
//				rs.close();
//				ps.close();
//				conn.close();
//			} catch (Exception e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//		}
//		return user;
//	}

	
	public ArrayList<User> findAllUsers() {
		ArrayList<User> userlist = new ArrayList<User>();
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		
		try {
			conn = DBConfig.getConnection();
			ps = conn.prepareStatement("select * from t_user");
			rs = ps.executeQuery();
			while(rs.next()) {
				User user = new User(); //一定要加,否则会发生空指针异常
				user.setId(rs.getInt("id"));
				user.setUsername(rs.getString("username"));
				user.setName(rs.getString("name"));
				user.setPassword(rs.getString("password"));
				user.setSex(rs.getString("sex"));
				userlist.add(user);
			}
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			DBConfig.close(rs, ps, conn);
		}
		return userlist;
	}

	public User findUserByUsername(String username) {
		User user = null;
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		
		try {
			conn = DBConfig.getConnection();
			ps = conn.prepareStatement("select * from t_user where username=?");
			ps.setString(1, username);
			//此时的rs处于第一行记录的上面,指向null
			rs = ps.executeQuery();
			//rs.next()后,rs指向第一行记录
			while(rs.next()) {
				//此处必须new一个user,否则报null异常
				user = new User();
				user.setId(rs.getInt("id"));
				user.setUsername(rs.getString("username"));
				user.setName(rs.getString("name"));
				user.setSex(rs.getString("sex"));
			}
			
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			DBConfig.close(rs, ps, conn);
		}
		return user;
	}

	public boolean login(String username, String password) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		
		try {
			conn = DBConfig.getConnection();
			String sql = "select count(*) countUser from t_user where username=? and password=?";
			//PreparedStatement编译并发送SQL语句,如用Statement会被SQL注入式攻击
			ps = conn.prepareStatement(sql);
			//?赋值
			ps.setString(1, username);
			ps.setString(2, password);
			rs = ps.executeQuery();
			
			while(rs.next()) {
				int result = rs.getInt("countUser");
				if(result == 1) {
					System.out.println("登录成功");
					return true;
				}else {
					System.out.println("登录失败");
					return false;
				}
			}
		} catch(Exception e) {
			e.printStackTrace();
		}finally {
			DBConfig.close(rs, ps, conn);
		}
		
		return false;
	}
}
最近下载更多
dgibvhjn LV24月18日
星星星星
陌路过客 LV24月16日
星星星星
帮帮小农 LV14月15日
星星
快快好 LV14月14日
星星
liyitong123 LV44月13日
月亮
lm666666666 LV14月13日
星星
2606131460 LV14月9日
星星
1468364881 LV34月8日
星星星星星星
飞猪奔跑记1 LV14月8日
星星
张氏一小生 LV24月7日
星星星星
最近浏览更多
凡先生 LV14昨天
月亮月亮月亮星星星星
nnnnnnnhau LV2昨天
星星星星
暂无贡献等级
louis888前天
暂无贡献等级
Mopp1234 LV2前天
星星星星
dgibvhjn LV24月18日
星星星星
13385512289l4月18日
暂无贡献等级
陌路过客 LV24月16日
星星星星
cqgcxy LV34月16日
星星星星星星
雾123456 LV24月16日
星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友