2012-01-09 15 views
5

में एक मैं अब login button दबाकर उनके username और password साथ Sample login application जिसमें user कर सकते हैं login पर काम कर रहा हूँ के साथ उपयोगकर्ताओं द्वारा दर्ज मान्य करने के लिए। यदि user नया है तो वह username और password चुनकर भी पंजीकरण कर सकता है। और यह registration आवेदन का हिस्सा काम किया।कैसे साख SQLite डेटाबेस


मेरे वास्तविक सवाल यह है: मैं कैसे उपयोगकर्ता एक ही है कि database में संग्रहीत के साथ credentials दर्ज की गई तुलना करते हैं।

मैं यूज़रनेम और इस

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); 
    } 

के रूप में लोक निर्माण विभाग का चयन करने के जहां username(un) और password(pwd) एक और java file login.java से आता है SELECT क्वेरी का इस्तेमाल किया।


अब कृपया मुझे बताओ कि कैसे मैं सफल प्रवेश के बाद पृष्ठ viewprofile के लिए एक सफल संक्रमण होगा?

+4

मैं सही बंद चार समस्याओं को देखने: 1) एसक्यूएल जावा नहीं है == एसक्यूएल के लिए अमान्य वाक्य रचना है। इसके बजाय केवल 1 = का उपयोग करें। एसक्यूएल में यह असाइनमेंट और सत्यापन के रूप में काम करता है। 2) un & pwd स्ट्रिंग वर्ण हैं और उन्हें tics (') में निहित होना चाहिए ... "जहां u_name ='" और un + "'और u_pwd ='" + pwd + "'" 3) यह तकनीक त्रुटिपूर्ण है यह स्वयं को एसक्यूएल इंजेक्शन के लिए खुला छोड़ देता है। इसके बजाय पैरामीटर का उपयोग करें। 4) आखिरकार आपको लौटने वाली पंक्ति गणना की जांच करनी होगी। यदि rowcount == 1 फिर सत्य लौटाता है, अन्यथा झूठी वापसी करें। – xQbert

+1

इसके अलावा, हालांकि एंड्रॉइड एप्लिकेशन की निर्देशिका में डेटाबेस स्टोर करता है, मैं पासवर्ड को स्पष्ट टेक्स्ट के रूप में स्टोर करने की अनुशंसा नहीं करता। मैं पासवर्ड के हैश फ़ंक्शन के बजाय उपयोग करने का प्रस्ताव करता हूं। – Yury

+0

आपके उत्तर xQbert और yury के लिए धन्यवाद ... – JAaVA

उत्तर

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

सबसे अच्छा तरीका है के बजाय पंक्ति प्रश्नों की, कर्सर का उपयोग करने के लिए है,

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(); 
संबंधित मुद्दे