Java数据库小项目01--实现用户登陆注册

先实现数据库和数据表,检测正常后再作其余的

1 CREATE TABLE users( 2 username VARCHAR(20) NOT NULL, 3 PASSWORD VARCHAR(10) NOT NULL); 4 INSERT INTO users VALUES 
5 ('a','1'),('b','2');

具体实现

有两个类,一个用来操做数据库一个用来实现用户界面的选择java

数据库操做类的实现c++

 1 package Test;  2 
 3 import java.sql.SQLException;  4 
 5 import org.apache.commons.dbutils.QueryRunner;  6 import org.apache.commons.dbutils.handlers.ArrayHandler;  7 import org.apache.commons.dbutils.handlers.ScalarHandler;  8 
 9 //这个类是操做数据库的类 10 // 实现两个方法用于用户注册和登陆
11 
12 public class UsersDao { 13     //建立QueryRunner类对象,在构造方法中传递工具类得到数据源
14     private QueryRunner qr =new QueryRunner(JDBCUtils.getDataSource()); 15     
16     //建立登陆功能接收用户输入的用户名和密码,并进行判断 17     //当结果集为0时说明没有查到相应的用户名和密码,返回false
18     public boolean login(String username,String password) throws SQLException{ 19         String sql="select * from users where username=? and password=?"; 20         Object[] params={username,password}; 21         //调用quer的query方法查询数据表
22         Object[] res=qr.query(sql, new ArrayHandler(),params); 23         //对查询到的结果判断
24         if(res.length==0) 25             return false; 26         return true; 27  } 28     
29     //判断用户名是否被注册了
30     public boolean register(String username,String password){ 31         try{ 32             String sql ="select username from users where username=?"; 33             //查询结果集,ScalarHander表示一个结果集
34             String user=qr.query(sql, new ScalarHandler<String>(), username); 35             //若是用户名存在,user里存的为用户名,若不存在则为null
36             if(user!=null) 37                 return false; 38             //不须要if else语句return直接返回了,下面语句不执行
39             sql="insert into users (username,PASSWORD) values (?,?)"; 40             //建立数组对象保存占位符的实际参数
41             Object[] params={username,password}; 42             //调用qr对象方法update写入数据
43  qr.update(sql,params); 44             return true; 45             }catch(SQLException e){ 46                 throw new RuntimeException("注册失败!"); 47  } 48  } 49 }

用户界面操做类的实现sql

 1 package Test;  2 
 3 import java.sql.SQLException;  4 import java.util.Scanner;  5 
 6 //用户操做界面--提供菜单选择不一样功能
 7 public class UserOperator {  8     private static Scanner sc=new Scanner(System.in);  9     //private String username;
10     public static void main(String[] args) throws SQLException { 11         //和局部变量的定义不一样
12         UsersDao dao=new UsersDao(); 13         //调用选择方法,获取用户选择内容
14         String number=chooser(); 15         
16         //对选择序号判断
17         switch(number){ 18             case "1": 19                 System.out.println("选择的是登陆,请输入用户名:"); 20                 //username在case 1中被定义的,可以做用在case 2,不明白为何?在C语言里是明显不行的
21                 String username=sc.next(); 22                 System.out.println("请输入密码:"); 23                 String password=sc.next(); 24                 //调用userdao类的login方法,传递用户名和密码 
25                 boolean b=dao.login(username,password); 26                 if(b) 27                     System.out.println("登陆成功!"); 28                 else
29                     System.out.println("登陆失败,请检查您的用户名和密码!"); 30             break; 31             case "2": 32                 System.out.println("选择的是注册,请输入用户名:"); 33                 username=sc.next(); 34                 System.out.println("请输入密码:"); 35                 password=sc.next(); 36                 b=dao.register(username,password); 37                 if(b) 38                     System.out.println("注册成功!"); 39                 else
40                     System.out.println("注册失败,请尝试"+username+"123"); 41             break; 42             case "3": 43                 System.exit(0); 44             default: 45                 System.out.println("没有此功能!"); 46  } 47  } 48     
49     //功能选择菜单方法
50     public static String chooser(){ 51         System.out.println("欢迎光临!"); 52         System.out.println("请选择功能菜单:"); 53         System.out.println("1 登陆   2 注册   3 退出"); 54         return sc.next(); 55  } 56 }

注:在用户界面操做类中有一处不理解关于switch中usernam,password的定义,当一开始直接选择2时明显是没有被定义为何还能正常使用?此处不明白,在传统的c、c++语言语法中这样作确定是会出错的。后面可能理解多是java语言中全部case的命名空间是同样的,还要在一处定义便可,下面这个代码可以正常运行:数据库

 1 public class Main{  2     public static void main(String[] args) {  3         int n=2;  4         int m=0;  5         switch(n){  6         case 1: int a=1;break;  7         case 2: a=2;m=a;break;  8         
 9  } 10  System.out.println(m); 11  } 12 }

但这样定义虽然可以运行可是程序阅读起来可能会引发误解,所以不提倡这样定义。apache

相关文章
相关标签/搜索