查看“Java任务:用户添加查询(MySql)实现”的源代码
←
Java任务:用户添加查询(MySql)实现
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==接口介绍== 假设项目与用户有关的操作接口UserDao,前面我们用HashMap实现了这个接口, 现在我们用对数据库的操作来实现这个接口。 ===UserDao接口=== <nowiki> 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);//验证用户名和密码是否一致 }</nowiki> ==接口的实现类== ===创建实现类UserDaoSQL=== UserDaoSQL: <nowiki> 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(){ }</nowiki> ===建立连接函数=== <nowiki> /** * 连接数据库 * @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; } </nowiki> 在类的构造函数仲添加此函数的调用: <nowiki> public UserDaoSQL(){ this.getConn(); }</nowiki> ===查询函数介绍=== ====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方法=== <nowiki> /** * 验证用户名是否存在 * @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; }</nowiki> ===编写addUser()方法=== <nowiki> /** * 向数据库中添加用户 * @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()); } }</nowiki> ====编写verify()方法==== <nowiki> /** * 验证用户名和密码是否正确 * @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; }</nowiki> ===编写queryUser( )方法=== <nowiki> /** * 向数据库中查询所有用户 * @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()); } }</nowiki> ===编写测试类=== TestUser: <nowiki> 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!");</nowiki> ==用到的其他类== User: <nowiki>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()); } } </nowiki>
返回至
Java任务:用户添加查询(MySql)实现
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息