“Java任务:修改用户密码”的版本间的差异
来自CloudWiki
(→实现思路) |
|||
第22行: | 第22行: | ||
} | } | ||
</nowiki> | </nowiki> | ||
− | |||
− | |||
===实现思路=== | ===实现思路=== | ||
*我们之前已经定义了一个UserDao接口。 | *我们之前已经定义了一个UserDao接口。 | ||
*现在我们用MYSQL数据库来实现这个接口。 | *现在我们用MYSQL数据库来实现这个接口。 | ||
+ | ==任务实现== | ||
+ | ===程序代码=== | ||
+ | <nowiki>package dao; | ||
− | + | import java.sql.*; | |
− | |||
− | + | import entity.User; | |
− | + | public class UserDaoSQL { | |
+ | // JDBC 驱动名及数据库 URL | ||
+ | static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; | ||
+ | static final String DB_URL = "jdbc:mysql://localhost:3306/cloud"; | ||
+ | // 数据库的用户名与密码,需要根据自己的设置 | ||
+ | static final String USER = "root"; | ||
+ | static final String PASS = "000000"; | ||
+ | |||
+ | public UserDaoSQL(){ | ||
+ | |||
+ | } | ||
+ | /** | ||
+ | * 连接数据库 | ||
+ | * @param 值为空 | ||
+ | * @return Connection 建立的数据库连接 | ||
+ | */ | ||
+ | private static Connection getConn() { | ||
+ | |||
+ | Connection conn = null; | ||
+ | try { | ||
+ | Class.forName(JDBC_DRIVER); //classLoader,加载对应驱动 | ||
+ | conn = (Connection) DriverManager.getConnection(DB_URL, USER, PASS); | ||
+ | System.out.println("MySQL连接成功!"); | ||
+ | } catch (ClassNotFoundException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | } catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | } | ||
+ | return conn; | ||
+ | } | ||
+ | /** | ||
+ | * 向数据库中添加用户 | ||
+ | * @param user,要添加的用户 | ||
+ | * @return 返回值为空 | ||
+ | */ | ||
+ | public void addUser(User user){//添加用户 | ||
+ | Connection conn = getConn(); | ||
+ | |||
+ | String sql = "insert into user (name,password) values(?,?)"; | ||
+ | PreparedStatement pstmt; | ||
+ | try { | ||
+ | pstmt = (PreparedStatement) conn.prepareStatement(sql); | ||
+ | pstmt.setString(1, user.getName()); | ||
+ | pstmt.setString(2, user.getPassword()); //pstmt.setInt(2, user.getAge()); pstmt.setDate | ||
+ | |||
+ | pstmt.executeUpdate(); | ||
+ | pstmt.close(); | ||
+ | conn.close(); | ||
+ | } catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | /** | ||
+ | * 向数据库中查询所有用户 | ||
+ | * @param 值为空 | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | public void queryUser( ){//查询用户 | ||
+ | Connection conn = getConn(); | ||
+ | String sql = "select * from user"; | ||
+ | PreparedStatement pstmt; | ||
+ | try { | ||
+ | pstmt = (PreparedStatement)conn.prepareStatement(sql); | ||
+ | ResultSet rs = pstmt.executeQuery();//执行查询 | ||
+ | int col = rs.getMetaData().getColumnCount();//获取字段数 | ||
+ | System.out.println("============================"); | ||
+ | while (rs.next()) { | ||
+ | for (int i = 1; i <= col; i++) { | ||
+ | System.out.print(rs.getString(i) + "\t"); | ||
+ | if ((i == 2) && (rs.getString(i).length() < 8)) {//此行仅仅是为了显示更好看,可以删去 | ||
+ | System.out.print("\t"); | ||
+ | } | ||
+ | } | ||
+ | System.out.println(""); | ||
+ | } | ||
+ | System.out.println("============================"); | ||
+ | } catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | } | ||
+ | } | ||
+ | /** | ||
+ | * 验证用户名是否存在 | ||
+ | * @param name,用户名 | ||
+ | * @return 布尔值 | ||
+ | */ | ||
+ | public boolean hasUser(String name){//查询某个用户是否存在 | ||
+ | boolean success=false;//标记验证是否成功 | ||
+ | try { | ||
+ | Connection con = getConn(); | ||
+ | String sql = "select * from user where name=? "; | ||
+ | PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql); | ||
+ | pstmt.setString(1, name); | ||
+ | |||
+ | ResultSet rs = pstmt.executeQuery();//执行查询 | ||
+ | |||
+ | if(rs.next()) { | ||
+ | //System.out.println("欢迎" + rs.getString("name")); | ||
+ | success=true; | ||
+ | } | ||
+ | pstmt.close(); | ||
+ | con.close(); | ||
+ | |||
+ | }catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | } | ||
+ | |||
+ | return success; | ||
+ | } | ||
+ | /** | ||
+ | * 验证用户名和密码是否正确 | ||
+ | * @param usename,用户名 | ||
+ | * @param password,密码 | ||
+ | * @return 建立的数据库连接 | ||
+ | */ | ||
+ | public boolean verify(String username, String password) { | ||
+ | boolean success=false;//标记验证是否成功 | ||
+ | try { | ||
+ | Connection con = getConn(); | ||
+ | |||
+ | String sql = "select * from user where name=? and password=?"; | ||
+ | PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql); | ||
+ | |||
+ | pstmt.setString(1, username); | ||
+ | pstmt.setString(2, password); | ||
+ | ResultSet rs = pstmt.executeQuery();//执行查询 | ||
+ | |||
+ | if(rs.next()) { | ||
+ | //System.out.println("欢迎" + rs.getString("name")); | ||
+ | success=true; | ||
+ | } | ||
+ | pstmt.close(); | ||
+ | con.close(); | ||
+ | |||
+ | }catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | } | ||
+ | |||
+ | return success; | ||
+ | |||
+ | } | ||
+ | public static void main(String[] args) { | ||
+ | getConn(); | ||
+ | UserDaoSQL uds =new UserDaoSQL(); | ||
+ | uds.verify("ma","123456"); | ||
+ | User u1=new User("zhangyi","456");//这里可能会遇到构造方法参数不符的问题,重新修改一下构造方法 | ||
+ | uds.addUser(u1); | ||
+ | System.out.println(uds.hasUser(u1.getName())); | ||
+ | uds.queryUser(); | ||
+ | System.out.println("Goodbye!"); | ||
+ | } | ||
+ | }</nowiki> | ||
− | |||
返回 [[Java程序设计]] | 返回 [[Java程序设计]] |
2018年5月9日 (三) 14:30的版本
任务描述:修改用户密码
如图7-2所示,用户登录成功后还可以根据需要选择自己需要的服务,如修改密码,查询图书等。本节先来完成密码修改,下节内容将完成图书查询。
图7-2 修改密码
前情回顾
用户数据接口UserDao
package dao; import entity.User; public interface UserDao { public void addUser(User u);//添加用户 public void queryUser( );//查询用户 public boolean hasUser(String name);//查询某个用户是否存在 public boolean verify(String name, String pwd);//验证用户名和密码是否一致 }
实现思路
- 我们之前已经定义了一个UserDao接口。
- 现在我们用MYSQL数据库来实现这个接口。
任务实现
程序代码
package dao; import java.sql.*; import entity.User; public class UserDaoSQL { // JDBC 驱动名及数据库 URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/cloud"; // 数据库的用户名与密码,需要根据自己的设置 static final String USER = "root"; static final String PASS = "000000"; public UserDaoSQL(){ } /** * 连接数据库 * @param 值为空 * @return Connection 建立的数据库连接 */ private static Connection getConn() { Connection conn = null; try { Class.forName(JDBC_DRIVER); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(DB_URL, USER, PASS); System.out.println("MySQL连接成功!"); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); } catch (SQLException e) { System.out.println(e.getMessage()); } return conn; } /** * 向数据库中添加用户 * @param user,要添加的用户 * @return 返回值为空 */ public void addUser(User user){//添加用户 Connection conn = getConn(); String sql = "insert into user (name,password) values(?,?)"; PreparedStatement pstmt; try { pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setString(1, user.getName()); pstmt.setString(2, user.getPassword()); //pstmt.setInt(2, user.getAge()); pstmt.setDate pstmt.executeUpdate(); pstmt.close(); conn.close(); } catch (SQLException e) { System.out.println(e.getMessage()); } } /** * 向数据库中查询所有用户 * @param 值为空 * @return 值为空 */ public void queryUser( ){//查询用户 Connection conn = getConn(); String sql = "select * from user"; PreparedStatement pstmt; try { pstmt = (PreparedStatement)conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery();//执行查询 int col = rs.getMetaData().getColumnCount();//获取字段数 System.out.println("============================"); while (rs.next()) { for (int i = 1; i <= col; i++) { System.out.print(rs.getString(i) + "\t"); if ((i == 2) && (rs.getString(i).length() < 8)) {//此行仅仅是为了显示更好看,可以删去 System.out.print("\t"); } } System.out.println(""); } System.out.println("============================"); } catch (SQLException e) { System.out.println(e.getMessage()); } } /** * 验证用户名是否存在 * @param name,用户名 * @return 布尔值 */ public boolean hasUser(String name){//查询某个用户是否存在 boolean success=false;//标记验证是否成功 try { Connection con = getConn(); String sql = "select * from user where name=? "; PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql); pstmt.setString(1, name); ResultSet rs = pstmt.executeQuery();//执行查询 if(rs.next()) { //System.out.println("欢迎" + rs.getString("name")); success=true; } pstmt.close(); con.close(); }catch (SQLException e) { System.out.println(e.getMessage()); } return success; } /** * 验证用户名和密码是否正确 * @param usename,用户名 * @param password,密码 * @return 建立的数据库连接 */ public boolean verify(String username, String password) { boolean success=false;//标记验证是否成功 try { Connection con = getConn(); String sql = "select * from user where name=? and password=?"; PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql); pstmt.setString(1, username); pstmt.setString(2, password); ResultSet rs = pstmt.executeQuery();//执行查询 if(rs.next()) { //System.out.println("欢迎" + rs.getString("name")); success=true; } pstmt.close(); con.close(); }catch (SQLException e) { System.out.println(e.getMessage()); } return success; } public static void main(String[] args) { getConn(); UserDaoSQL uds =new UserDaoSQL(); uds.verify("ma","123456"); User u1=new User("zhangyi","456");//这里可能会遇到构造方法参数不符的问题,重新修改一下构造方法 uds.addUser(u1); System.out.println(uds.hasUser(u1.getName())); uds.queryUser(); System.out.println("Goodbye!"); } }
返回 Java程序设计