2012-01-09 14 views
5

Tôi hiện đang làm việc trên Sample login application trong đó user thể login với usernamepassword của họ bằng cách nhấn login button. Nếu user là mới thì người đó cũng có thể đăng ký bằng cách chọn usernamepassword. Và điều này registration một phần của ứng dụng làm việc.Làm thế nào để xác nhận các thông tin nhập vào bởi người sử dụng với một trong cơ sở dữ liệu SQLite


câu hỏi thực tế của tôi là: Làm thế nào để so sánh người dùng nhập credentials với một trong đó lưu trữ trong database.

tôi đã sử dụng SELECT truy vấn để chọn tên người dùng và pwd như thế này

public void ValidateLogin(String un, String pwd) 
    { 
     SELECT_FROM = "SELECT u_name, u_pwd FROM" + table_name + "WHERE u_name == " + un + "AND u_pwd ==" + pwd; 
     db.execSQL(SELECT_FROM); 
    } 

nơi username(un)password(pwd) đến từ java file login.java khác.


Bây giờ hãy cho tôi biết làm thế nào tôi có thể làm cho một sự chuyển tiếp thành công để viewprofile trang sau khi đăng nhập thành công?

+4

tôi thấy bốn vấn đề đúng off: 1) SQL không phải là java == là cú pháp hợp lệ cho SQL. Thay vào đó chỉ sử dụng 1 =. trong SQL nó hoạt động như các nhiệm vụ và xác nhận hợp lệ. 2) un & pwd là chuỗi ký tự và phải được chứa trong tics (') vì vậy ... "WHERE u_name ='" & un + "'AND u_pwd ='" + pwd + "'" 3) Kỹ thuật này là thiếu sót như nó để bản thân bạn mở để tiêm SQL. Thay vào đó sử dụng tham số. 4) cuối cùng bạn cần phải kiểm tra số hàng trả về. Nếu rowcount == 1 sau đó trả về true, ngược lại trả về false. – xQbert

+1

Hơn nữa, mặc dù android lưu trữ cơ sở dữ liệu trong thư mục của ứng dụng, tôi sẽ không khuyên bạn nên lưu trữ mật khẩu dưới dạng văn bản rõ ràng. Tôi đề nghị sử dụng thay vào đó một hàm băm của mật khẩu. – Yury

+0

cảm ơn câu trả lời của bạn xQbert và yury ... – JAaVA

Trả lời

1
You can use `cursor` with `rawquery` to validate username and password in one boolean type of method 

    public boolean ValidateLogin(String un, String pwd) 
     { 
     boolean chklogin=false;  
     c = db.rawQuery("SELECT u_name, u_pwd FROM " + table_name + " WHERE u_name = '"+ un + "' AND u_pwd ='"+ pwd + "'", null); 

     if(c==null) 
     { 
      //set boolean var to false 
       chklogin=false; 
      //message no such records 
     } 

     else 
     { 
      //set boolean var to true 
       chklogin=true; 
       c.moveToFirst(); 
     } 

     return chklogin; //boolean var 
} 
0

Cách tốt nhất là sử dụng con trỏ, thay vì truy vấn liên tiếp,

String[] selectionArgs = {un,pwd}; 
Cursor cursor = db.query(table_name, {"u_name", "u_pwd"} , "u_name=? and u_pwd=?", selectionArgs , null, null, null); 

if (cursor.moveToNext()){ 
    //Success 
}else{ 
    //Failure 
} 
cursor.close(); 
Các vấn đề liên quan