Java任务:用户添加查询(MySql)实现
目录
接口介绍
假设项目与用户有关的操作接口UserDao,前面我们用HashMap实现了这个接口,
现在我们用对数据库的操作来实现这个接口。
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);//验证用户名和密码是否一致 }
接口的实现类
创建实现类UserDaoSQL
UserDaoSQL:
public class UserDaoSQL implements UserDao{ // JDBC 驱动名及数据库 URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://10.0.0.30:3306/cloud?characterEncoding=utf8"; // 数据库的用户名与密码,需要根据自己的设置 static final String USER = "root"; static final String PASS = "000000"; Connection conn; public UserDaoSQL(){ }
建立连接函数
/** * 连接数据库 * @param 值为空 * @return Connection 建立的数据库连接 */ private boolean getConn() { //Connection conn = null; try { Class.forName(JDBC_DRIVER); //classLoader,加载对应驱动 this.conn = (Connection) DriverManager.getConnection(DB_URL, USER, PASS); System.out.println("MySQL连接成功!"); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); return false; } catch (SQLException e) { System.out.println(e.getMessage()); return false; } return true; }
在类的构造函数仲添加此函数的调用:
public UserDaoSQL(){ this.getConn(); }
查询函数介绍
Statement接口
Statement接口 用于执行静态的sql语句(单次执行),通过 Connection对象创建实例。
例如: Statementstmt=conn.createStatement();//创建Statement对象 其常用方法如下:
executeQuery(sql)方法
executeQuery(sql)方法 执行查询语句,并返回结果集。例如: ResultSetrs= stmt.executeQuery(sql);
用于产生单个结果集(ResultSet)的语句,例如:被执行最多的SELECT 语句。
这个方法被用来执行 SELECT 语句,但也只能执行查询语句,执行后返回代表查询结果的ResultSet对象。
executeUpdate(sql)方法
executeUpdate(sql)方法 执行 DML语句,并返回影响的记录数。例如: intcount= stmt.executeUpdate(sql);
用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。
INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。
executeUpdate 的返回值是一个整数(int),指示受影响的行数(即更新计数) 。 对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
execute(sql)方法
execute(sql)方法 若sql是查询语句且有结果集,则返回true;若是非查询语句或者没有结果集,则返回 false。例如: booleanflag= stmt.execute(sql);
编写hasUser方法
/** * 验证用户名是否存在 * @param name,用户名 * @return 布尔值 */ public boolean hasUser(String name){//查询某个用户是否存在 boolean success=false;//标记验证是否成功 try { Statement stmt = null; ResultSet rs = null; stmt = conn.createStatement(); String sql = "SELECT * FROM user WHERE " + "name='" + name + "'"; rs = stmt.executeQuery(sql); if(rs.next()) { success=true;; } else { success=false; } } catch (SQLException e) { System.out.println(e.getMessage()); } return success; }
编写addUser()方法
/** * 向数据库中添加用户 * @param user,要添加的用户 * @return 返回值为空 */ public void addUser(User user){//添加用户 try { //Connection conn = getConn(); Statement stmt = null; stmt = conn.createStatement(); //INSERT INTO `user` (name,password) VALUES ('ma', '123456'); String sql = "INSERT INTO `user` (name,password) VALUES ('" + user.getName() + "', '"+user.getPwd()+"')"; int i=stmt.executeUpdate(sql); //conn.close(); } catch (SQLException e) { System.out.println(e.getMessage()); } }
编写verify()方法
/** * 验证用户名和密码是否正确 * @param usename,用户名 * @param password,密码 * @return 建立的数据库连接 */ public boolean verify(String username, String password) { boolean success=false; try { Statement stmt = null; ResultSet rs = null; stmt = conn.createStatement(); String sql = "SELECT * FROM user WHERE " + "name='" + username + "' and password='" + password + "'"; rs = stmt.executeQuery(sql); if(rs.next()) { success=true;; } else { success=false; } } catch (SQLException e) { System.out.println(e.getMessage()); } return success; }
编写queryUser( )方法
/** * 向数据库中查询所有用户 * @param 值为空 * @return 值为空 */ public void queryUser( ){//查询用户 try { // Connection conn = getConn(); Statement stmt = null; ResultSet rs = null; stmt = conn.createStatement(); String sql = "SELECT * FROM user "; rs = stmt.executeQuery(sql); 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("============================"); //conn.close(); } catch (SQLException e) { System.out.println(e.getMessage()); } }
编写测试类
TestUser:
package main; import dao.UserDao; import dao.UserDaoSQL; import entity.User; public class TestUser { public static void main(String[] args) throws Exception{ UserDao uds =new UserDaoSQL(); uds.verify("ma","123456"); User u1=new User("zhangwu","456");//这里可能会遇到构造方法参数不符的问题,重新修改一下构造方法 uds.addUser(u1); System.out.println(uds.hasUser(u1.getName())); uds.queryUser(); System.out.println("Goodbye!");
用到的其他类
User:
package entity; public class User { protected String id; protected String name; protected String pwd; public User() { } public User(String n,String p) { this.name = n; this.pwd = p; } public void setName(String name) { this.name = name; } public void setPwd(String pwd) { this.pwd = pwd; } public String getName() { return this.name; } public String getPwd() { return this.pwd; } public String toString() { String s=""; s= "姓名:"+this.name + " 密码:" +this.pwd; return s; } public static void main(String[] args) { // TODO Auto-generated method stub User u1 = new User(); u1.setName("wangli");u1.setPwd("000000"); System.out.println("姓名: "+u1.getName()+" 密码: "+u1.getPwd()); User u2 = new User("chenming","123456"); System.out.println(u2.toString()); } }