2016-05-25 71 views
0

我希望某個特定的電子郵件ID在註冊時不應該使用一次以上。這是我的代碼:使用JSP檢查電子郵件ID是否已經存在於數據庫中

if(request.getParameter("btn1")!=null) 
    { 
     String unm=request.getParameter("nm"); 
     String em=request.getParameter("email"); 
     String pwd=request.getParameter("pass"); 
     Connect c1=new Connect(); 
     String q="insert into register(name,email,password) values('"+unm+"','"+em+"','"+pwd+"');"; 
    int rs=c1.DMLExecuter(q); 
    if(rs>0) 
    %> 
    <script> 
     alert("You are registered now. Please login to continue."); 
    </script> 

我應該怎麼做才能檢查電子郵件ID是否正在使用兩次?

+0

短:請email列在DB作爲主鍵。長:先執行選擇查詢,然後用參數電子郵件檢查存在,然後插入。 – Naman

+1

請!!!使用PreparedStatement的... –

+1

請!!!#2不要將原始密碼存儲在數據庫中。小鮑比桌子否則會偷走他們所有的人。 – zapl

回答

1
  1. 確保您的電子郵件字段是唯一的,例如通過相應地調整DDL(這將使數據庫確保電子郵件地址是唯一的)。可替代地,電子郵件字段可以由主鍵:

    CREATE TABLE register(
        ... 
        EMAIL VARCHAR(50) NOT NULL UNIQUE, 
        ... 
    ) 
    
  2. 在代碼中,插入之前,由該ID檢查現有的電子郵件的計數:

    long existingCount = ... 
    String countQuery = "SELECT COUNT(1) FROM register WHERE email = ?" 
    

運行此查詢的值爲request.getParameter("email")。 結果應該是一個數字,告訴您使用該電子郵件的現有用戶的數量。

假定計數已存儲在existingCount變量:

if(existingCount == 0) { 
    //Put here the code to insert the new user as shown in your question... 
} else { 
%> 
    <script> 
     alert("You are already registered. Login or choose a different email"); 
    </script> 
<% 
} 

請注意,我的SQL中使用綁定變量,請用事先準備好的聲明

+0

謝謝你的解決方案:) –

相關問題