2016-09-25 10 views
-3

Ich bin Anfänger in Android-Programmierung, ich versuche, die Login-Funktion zu machen. Auf dieses System werden zwei Benutzer zugreifen, die Administratoren und Benutzer sind. Der Administrator muss nur den "admin" für den Benutzernamen und das Passwort eingeben, um auf das System zugreifen zu können. Die Benutzer müssen jedoch ihr Konto registrieren, bevor sie sich beim System anmelden.Login (Kann Daten aus der Datenbank nicht abrufen)

Ich denke, es gibt kein Problem mit der Registrierung. Beim Anmelden des Kontos wird jedoch angegeben, dass der Benutzername und das Passwort nicht übereinstimmen. Ich denke, es kann die Daten nicht aus der Datenbank abrufen. Bitte helfen Sie mir, den Registrierungs- und Login-Funktionscode zu überprüfen. Danke

MainActivity.java

public void onclickLogin(View view) { 
Toast.makeText(getBaseContext(), "Please wait....", Toast.LENGTH_LONG).show(); 
txtusername = Username.getText().toString(); 
txtpassword = Password.getText().toString(); 
DatabaseOperations dop = new DatabaseOperations(this, null, null, 1); 
Cursor CR = dop.getInformation(dop); 
CR.moveToFirst(); 
boolean login_status = false; 
String NAME = ""; 
if (txtusername.equals("Admin") && (txtpassword).equals("Admin")) { 
    Intent in = new Intent(MainActivity.this, AdminMenu.class); 
    startActivity(in); 
} else { 
    do { 
     if (txtusername.equals(CR.getColumnIndex(TableData.TableInfo.USERNAME)) && (txtpassword.equals(CR.getColumnIndex(TableData.TableInfo.USERPASS)))) { 
      login_status = true; 
      NAME = CR.getString(CR.getColumnIndex(TableData.TableInfo.USERNAME)); 
     } 
    } while (CR.moveToNext()); 
    if (login_status) { 
     Toast.makeText(getBaseContext(), "Login Success....\n Welcome " + NAME, Toast.LENGTH_LONG).show(); 
     Intent i=new Intent(MainActivity.this,UserMenu.class); 
     Bundle bundle=new Bundle(); 
     bundle.putString("username",NAME); 
     i.putExtras(bundle); 
     startActivity(i); 
     finish(); 
    } else { 
     Toast.makeText(getBaseContext(), "Login Failed...", Toast.LENGTH_LONG).show(); 
    } 

DatabaseOperations.java

public Cursor getInformation(DatabaseOperations dob) 
{ 
SQLiteDatabase database=dob.getReadableDatabase(); 
String[] columns={TableInfo.USERNAME,TableInfo.USERPASS}; 
Cursor cr=database.query(TableInfo.TABLE_NAME,columns,null,null,null,null,null); 
return cr; 
} 

public void putInformation(Account account) { 
ContentValues cv = new ContentValues(); 
cv.put(TableInfo.USERNAME, account.get_username()); 
cv.put(TableInfo.USERPASS, account.get_password()); 
cv.put(TableInfo.USERPHONE, account.get_Phone()); 
cv.put(TableInfo.USEREMAIL, account.get_Email()); 
cv.put(TableInfo.USERCARPLATE1, account.get_CarPlate1()); 
cv.put(TableInfo.USERFULLNAME, account.get_FullName()); 
cv.put(TableInfo.USERIC, account.get_IdentityCard()); 
SQLiteDatabase SQ = this.getWritableDatabase(); 
SQ.insert(TableInfo.TABLE_NAME, null, cv); 
Log.d("Database operations", "One row inserted"); 
SQ.close(); 
} 

RegisterPage.java

public void onclickRegistering(View view) 
    { 
      registerusername=RegisterUsername.getText().toString(); 
      registerpassword=RegisterPassword.getText().toString(); 
      conpassword=ConPassword.getText().toString(); 
      phone=Phone.getText().toString(); 
      email=Email.getText().toString(); 
      identitycard=IdentityCard.getText().toString(); 
      fullname=FullName.getText().toString(); 
      carplate=CarPlate.getText().toString(); 
      if(!(registerpassword.equals(conpassword))) 
      { 
       Toast.makeText(getBaseContext(),"Passwords are not matching",Toast.LENGTH_LONG).show(); 
       RegisterUsername.setText(""); 
       RegisterPassword.setText(""); 
       ConPassword.setText(""); 
       Phone.setText(""); 
       Email.setText(""); 
       IdentityCard.setText(""); 
       FullName.setText(""); 
       CarPlate.setText(""); 
      } 
      else 
      { 
       DatabaseOperations db=new DatabaseOperations(this,null,null,1); 
       Account user=new Account(registerusername,registerpassword,Integer.parseInt(phone),email,Integer.parseInt(identitycard),fullname,carplate); 
       db.putInformation(user); 
       Toast.makeText(getBaseContext(),"Register Successfully...",Toast.LENGTH_LONG).show(); 
       Intent in=new Intent(register_page.this,MainActivity.class); 
       startActivity(in); 
       finish(); 
      } 

     } 
+0

, wo Sie Daten aus der Datenbank – androidXP

+0

leider bekomme ich die Registerfunktion gerade jetzt – Jayson

+0

hinzuzufügen vergessen zu Versuchen mit dem Namen der Anmeldung '0' und '1' Passwort. –

Antwort

0

Im folgenden Code-Schnipsel Sie versuchen, sowohl Benutzernamen und Passwort vergleichen abgerufen aus der Datenbank mit Benutzernamen allein - hoffe, dass dies der Grund sein könnte, warum Sie getti sind ng den Fehler.

do { 
    if (txtusername.equals(CR.getColumnIndex(TableData.TableInfo.USERNAME)) && (txtpassword.equals(CR.getColumnIndex(TableData.TableInfo.USERPASS)))) { 
     login_status = true; 
     NAME = CR.getString(CR.getColumnIndex(TableData.TableInfo.USERNAME)); 
    } 
} while (CR.moveToNext()); 

siehe den unten stehenden Link Using SQlite to validate Logins in Android

+0

Danke, jetzt kann ich mein Programm bereits ausführen – Jayson

Verwandte Themen