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

相關文章
相關標籤/搜索