欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

企业实训第十四节

程序员文章站 2024-03-25 23:47:34
...

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