企业实训第十四节

package com.zq.dao;

import java.util.List;

import com.zq.model.User;

public interface UserDao { public boolean login(String username,String pwd);

public List<User> list();

public boolean del(Integer id);

public boolean add(User user);

public boolean update(User user);

public User findById(Integer id);

}

package com.zq.dao;

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;

import com.zq.model.User;

public class UserDaoImpl implements UserDao {

[@Override](https://my.oschina.net/u/1162528)
public boolean login(String username, String pwd) {
	//写连接数据库,查询用户名密码是否正确的操作
	Connection conn = null;
	PreparedStatement pst = null;//因为最后需要关闭,所以写在最上面,不然try里面内容,
	//Statement,但是不太常用,拼装带参数的sql比较麻烦
	//finally里面调不到
	ResultSet rs = null;
	
	//1、引入具体的数据库jar包
	try{
		//2、注册/安装数据库的驱动程序/类
		Class.forName("com.mysql.jdbc.Driver");
		//3、创建数据库连接,连接数据库:哪个数据库、用户名、密码多少
		conn = DriverManager.getConnection(
				"jdbc:mysql://localhost:3306/myweb","root","");//机房的密码为空
		
		//4、sql语句,并且对数据库执行下sql语句:查询返回结果、删除、更新
		String sql = "select * from user where username = ? and pwd = ?";
		pst = conn.prepareStatement(sql);
		//穿进去用户名和密码
		pst.setString(1, username);
		pst.setString(2,pwd);
		
		//5、如果是查询,需要获取查询结果
		rs = pst.executeQuery();
		
		//判断查询到的结果集里面是否有数据
		if(rs.next()){//存的是0或者1条,所有获取结果集用的if,但是多条while,循环结果集里的数据
			User user = new User();
			//把结果集里取到的信息塞到user里
			user.setId(rs.getInt(1));//按查询出来列的顺序取得,第1列是id,
			//getString("username")这个username是数据库表的列名或者查询时取得别名
			//select username as name from user;
			user.setUsername(rs.getString("username"));//getString(2)
			user.setPwd(rs.getString(3));
			return true;
		}else{
			return false;
		}		
	}catch(Exception e){
		e.printStackTrace();
	}finally{			
		//6、关闭数据库连接的这些对象,释放缓存
		//倒着关闭,就是先建立的数据库连接connetction,那就最后关;最后建的结果集ResultSet,就应该最先关闭
		try {
			if(rs!=null){
				rs.close();
			}
			if(pst!=null){
				pst.close();
			}
			if(conn!=null){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	return false;
}

[@Override](https://my.oschina.net/u/1162528)
public List<User> list() {
	//写连接数据库,查询用户名密码是否正确的操作
	Connection conn = null;
	PreparedStatement pst = null;//因为最后需要关闭,所以写在最上面,不然try里面内容,
	//Statement,但是不太常用,拼装带参数的sql比较麻烦
	//finally里面调不到
	ResultSet rs = null;
	//查询结果需要返回的数据,放在list里面
	List<User> list = new ArrayList<User>();
	
	//1、引入具体的数据库jar包
	try{
		//2、注册/安装数据库的驱动程序/类
		Class.forName("com.mysql.jdbc.Driver");
		//3、创建数据库连接,连接数据库:哪个数据库、用户名、密码多少
		conn = DriverManager.getConnection(
				"jdbc:mysql://localhost:3306/myweb","root","");//机房的密码为空
		
		//4、sql语句,并且对数据库执行下sql语句:查询返回结果、删除、更新
		String sql = "select * from user";//查询表里的所有数据,列表展示要用的
		pst = conn.prepareStatement(sql);			
		//5、如果是查询,需要获取查询结果
		rs = pst.executeQuery();
		
		//判断查询到的结果集里面是否有数据
		while(rs.next()){//存的是0或者1条,所有获取结果集用的if,但是多条while,循环结果集里的数据
			User user = new User();
			//把结果集里取到的信息塞到user里
			user.setId(rs.getInt(1));//按查询出来列的顺序取得,第1列是id,
			user.setUsername(rs.getString("username"));//getString(2)
			user.setPwd(rs.getString(3));
			//将从rs中循环出来的这一行数据放到list里面,
			list.add(user);
		}		
	}catch(Exception e){
		e.printStackTrace();
	}finally{			
		//6、关闭数据库连接的这些对象,释放缓存
		//倒着关闭,就是先建立的数据库连接connetction,那就最后关;最后建的结果集ResultSet,就应该最先关闭
		try {
			if(rs!=null){
				rs.close();
			}
			if(pst!=null){
				pst.close();
			}
			if(conn!=null){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	return list;
}

[@Override](https://my.oschina.net/u/1162528)
public boolean del(Integer id) {
	//写连接数据库,查询用户名密码是否正确的操作
	Connection conn = null;
	PreparedStatement pst = null;//因为最后需要关闭,所以写在最上面,不然try里面内容,
	//Statement,但是不太常用,拼装带参数的sql比较麻烦
	//finally里面调不到
	ResultSet rs = null;
	
	//1、引入具体的数据库jar包
	try{
		//2、注册/安装数据库的驱动程序/类
		Class.forName("com.mysql.jdbc.Driver");
		//3、创建数据库连接,连接数据库:哪个数据库、用户名、密码多少
		conn = DriverManager.getConnection(
				"jdbc:mysql://localhost:3306/myweb","root","");//机房的密码为空
		
		//4、sql语句,并且对数据库执行下sql语句:查询返回结果、删除、更新
		String sql = "delete from user where id = ?";
		pst = conn.prepareStatement(sql);
		//穿进去用户名和密码
		pst.setInt(1, id);			
		//5、如果是查询,需要获取查询结果
		int n = pst.executeUpdate();//执行更新操作,返回执行成功的数据条数			
		if(n>0){
			return true;
		}else{
			return false;
		}		
	}catch(Exception e){
		e.printStackTrace();
	}finally{			
		//6、关闭数据库连接的这些对象,释放缓存
		//倒着关闭,就是先建立的数据库连接connetction,那就最后关;最后建的结果集ResultSet,就应该最先关闭
		try {
			if(rs!=null){
				rs.close();
			}
			if(pst!=null){
				pst.close();
			}
			if(conn!=null){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	return false;
}

[@Override](https://my.oschina.net/u/1162528)
public boolean add(User user) {
	//写连接数据库,查询用户名密码是否正确的操作
	Connection conn = null;
	PreparedStatement pst = null;//因为最后需要关闭,所以写在最上面,不然try里面内容,
	//Statement,但是不太常用,拼装带参数的sql比较麻烦
	//finally里面调不到
	ResultSet rs = null;
	
	//1、引入具体的数据库jar包
	try{
		//2、注册/安装数据库的驱动程序/类
		Class.forName("com.mysql.jdbc.Driver");
		//3、创建数据库连接,连接数据库:哪个数据库、用户名、密码多少
		conn = DriverManager.getConnection(
				"jdbc:mysql://localhost:3306/myweb","root","");//机房的密码为空
		
		//4、sql语句,并且对数据库执行下sql语句:查询返回结果、删除、更新
		String sql = "insert into user(username,pwd) values(?,?)";
		pst = conn.prepareStatement(sql);
		//穿进去用户名和密码
		pst.setString(1, user.getUsername());
		pst.setString(2, user.getPwd());
		//5、如果是查询,需要获取查询结果
		int n = pst.executeUpdate();//执行更新操作,返回执行成功的数据条数			
		if(n>0){
			return true;
		}else{
			return false;
		}		
	}catch(Exception e){
		e.printStackTrace();
	}finally{			
		//6、关闭数据库连接的这些对象,释放缓存
		//倒着关闭,就是先建立的数据库连接connetction,那就最后关;最后建的结果集ResultSet,就应该最先关闭
		try {
			if(rs!=null){
				rs.close();
			}
			if(pst!=null){
				pst.close();
			}
			if(conn!=null){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	return false;
}

[@Override](https://my.oschina.net/u/1162528)
public boolean update(User user) {
	//写连接数据库,查询用户名密码是否正确的操作
	Connection conn = null;
	PreparedStatement pst = null;//因为最后需要关闭,所以写在最上面,不然try里面内容,
	//Statement,但是不太常用,拼装带参数的sql比较麻烦
	//finally里面调不到
	ResultSet rs = null;
	
	//1、引入具体的数据库jar包
	try{
		//2、注册/安装数据库的驱动程序/类
		Class.forName("com.mysql.jdbc.Driver");
		//3、创建数据库连接,连接数据库:哪个数据库、用户名、密码多少
		conn = DriverManager.getConnection(
				"jdbc:mysql://localhost:3306/myweb","root","");//机房的密码为空
		
		//4、sql语句,并且对数据库执行下sql语句:查询返回结果、删除、更新
		String sql = "update user set username = ?,pwd=? where id = ?";
		pst = conn.prepareStatement(sql);
		//穿进去用户名和密码
		pst.setString(1, user.getUsername());	
		pst.setString(2, user.getPwd());	
		pst.setInt(3, user.getId());			
		//5、如果是查询,需要获取查询结果
		int n = pst.executeUpdate();//执行更新操作,返回执行成功的数据条数			
		if(n>0){
			return true;
		}else{
			return false;
		}		
	}catch(Exception e){
		e.printStackTrace();
	}finally{			
		//6、关闭数据库连接的这些对象,释放缓存
		//倒着关闭,就是先建立的数据库连接connetction,那就最后关;最后建的结果集ResultSet,就应该最先关闭
		try {
			if(rs!=null){
				rs.close();
			}
			if(pst!=null){
				pst.close();
			}
			if(conn!=null){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	return false;
}

@Override
public User findById(Integer id) {
	//写连接数据库,查询用户名密码是否正确的操作
	Connection conn = null;
	PreparedStatement pst = null;//因为最后需要关闭,所以写在最上面,不然try里面内容,
	//Statement,但是不太常用,拼装带参数的sql比较麻烦
	//finally里面调不到
	ResultSet rs = null;
	
	//1、引入具体的数据库jar包
	try{
		//2、注册/安装数据库的驱动程序/类
		Class.forName("com.mysql.jdbc.Driver");
		//3、创建数据库连接,连接数据库:哪个数据库、用户名、密码多少
		conn = DriverManager.getConnection(
				"jdbc:mysql://localhost:3306/myweb","root","");//机房的密码为空
		
		//4、sql语句,并且对数据库执行下sql语句:查询返回结果、删除、更新
		String sql = "select * from user where id = ?";
		pst = conn.prepareStatement(sql);
		//穿进去用户名和密码
		pst.setInt(1, id);
		
		//5、如果是查询,需要获取查询结果
		rs = pst.executeQuery();
		
		//判断查询到的结果集里面是否有数据
		if(rs.next()){//存的是0或者1条,所有获取结果集用的if,但是多条while,循环结果集里的数据
			User user = new User();
			//把结果集里取到的信息塞到user里
			user.setId(rs.getInt(1));//按查询出来列的顺序取得,第1列是id,
			//getString("username")这个username是数据库表的列名或者查询时取得别名
			//select username as name from user;
			user.setUsername(rs.getString("username"));//getString(2)
			user.setPwd(rs.getString(3));
			return user;
		}else{
			return null;
		}		
	}catch(Exception e){
		e.printStackTrace();
	}finally{			
		//6、关闭数据库连接的这些对象,释放缓存
		//倒着关闭,就是先建立的数据库连接connetction,那就最后关;最后建的结果集ResultSet,就应该最先关闭
		try {
			if(rs!=null){
				rs.close();
			}
			if(pst!=null){
				pst.close();
			}
			if(conn!=null){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	return null;
}

}

转载于:https://my.oschina.net/u/4090474/blog/3060889

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值