2016-03-31 10 views
-4
package com.example.chris.thegiver; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class LogIn extends AppCompatActivity implements View.OnClickListener { 
    private Button btnRegister2, btnLogIn; 
    private EditText etUser, etPass; 

    DatabaseHelper helper = new DatabaseHelper(this); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_log_in); 

     btnRegister2 = (Button) findViewById(R.id.btnRegister2); 
     btnLogIn= (Button) findViewById(R.id.btnLogIn); 

     btnRegister2.setOnClickListener(this); 

    } 

Ich denke, das ist, wo ich mein Problem habe. Die App scheint überhaupt nicht auf die Datenbank zuzugreifen und um sich einzuloggen, muss ich überprüfen, ob der Benutzername mit dem Passwort übereinstimmt. Wenn das Passwort == der Benutzername ist, dann erlaubt es dem Benutzer sich einzuloggen. Leider geschieht das nicht.Versucht, Benutzernamen und Passwort in einer Datenbank zu speichern und überprüfen, ob der Benutzername und das Passwort übereinstimmen

@Override 
    public void onClick(View v) { 
     if(v.getId() == R.id.btnRegister2){ 
      startActivity(new Intent(LogIn.this, RegisterActivity.class)); 
     } 
     if(v.getId() == R.id.btnLogIn){ 
      EditText a = (EditText) findViewById(R.id.etUser); 
      String str = a.getText().toString(); 
      EditText b = (EditText) findViewById(R.id.etPass); 
      String pass = b.getText().toString(); 
      String password = helper.searchPass(str); 
      if(pass.equals(password)){ 
       Intent i = new Intent(LogIn.this,HomeActivity.class); 
       i.putExtra("Username: ", str); 
       startActivity(i); 
      } 
      else{ 
       Toast temp = Toast.makeText(LogIn.this, "Username and Password dont match!", Toast.LENGTH_SHORT); 
       temp.show(); 
      } 

     } 
    } 
} 

DATABASE CLASS

public class DatabaseHelper extends SQLiteOpenHelper { 

    private static final int DATABASE_VERSION = 1; 
    private static final String DATABASE_NAME = "contacts.db"; 
    private static final String TABLE_NAME = "contacts"; 
    private static final String COL_ID = "id"; 
    private static final String COL_NAME= "name"; 
    private static final String COL_EMAIL= "email"; 
    private static final String COL_USERNAME= "username"; 
    private static final String COL_PASSWORD= "password"; 
    SQLiteDatabase db; 
    private static final String TABLE_CREATE = "create table contacts (id integer primary key not null, name text not null," + 
      "email text not null, username text not null, password text not null)"; 



    public DatabaseHelper(Context context){ 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 

    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(TABLE_CREATE); 
     this.db = db; 

    } 

Diese Methode Funktionalität der Datenbank geben und ein Benutzer Informationen einzufügen, wenn ein neues Benutzerobjekt

public void insertContact(Contact c){ 
     db = this.getWritableDatabase(); 
     ContentValues values = new ContentValues(); 
     // * means all values 
     String query = "select * from contacts"; 
     Cursor cursor = db.rawQuery(query,null); 
     int count = cursor.getCount(); 

     values.put(COL_ID, count); 
     values.put(COL_NAME,c.getName()); 
     values.put(COL_EMAIL, c.getEmail()); 
     values.put(COL_USERNAME, c.getUsername()); 
     values.put(COL_PASSWORD, c.getPassword()); 

     **// this will insert the contact object into the database** 
     db.insert(TABLE_NAME, null, values); 
     db.close(); 
    } 

Diese Methode erstellt wird, ist, wo alles gehen kann Falsch Dies durchsucht die Datenbank nach dem Benutzernamen und prüft, ob der Benutzername mit dem Passwort übereinstimmt. Wenn es nicht ist, dann wird b auf dem Bildschirm ausgegeben werden

public String searchPass(String uname){ 
     db = this.getReadableDatabase(); 
     String query = "select uname, pass from" + TABLE_NAME; 
     Cursor cursor = db.rawQuery(query, null); 
     String a, b; 
     b = "not found"; 
     if(cursor.moveToFirst()){ 
      do{ 
       //usernam 
       a = cursor.getString(0); 

       if(a.equals(uname)){ 
        b = cursor.getString(1); 
        break; 
       }enter code here 
      } 
      while(cursor.moveToNext()); 
     } 
     return b; 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     String query = "DROP TABLE IF EXISTS" + TABLE_NAME; 
     db.execSQL(query); 
     this.onCreate(db); 

    } 
} 

REGISTRATION CLASS Diese Datenbankinformationen alle der Benutzernamen sendet.

package com.example.chris.thegiver; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 

public class RegisterActivity extends AppCompatActivity { 
    // calls the constructor of the DatabaseHelper class which will create the database and table 
    DatabaseHelper registerDB = new DatabaseHelper(this); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_register); 
    } 

    public void onRegisterClick(View v) { 
     if (v.getId() == R.id.btnReg) { 

      EditText etName = (EditText) findViewById(R.id.etName); 
      EditText etEmail = (EditText) findViewById(R.id.etEmail); 
      EditText etUsername = (EditText) findViewById(R.id.etUsername); 
      EditText etPassword = (EditText) findViewById(R.id.etPassword); 
      EditText etConfirm = (EditText) findViewById(R.id.etConfirm); 


      String name = etName.getText().toString(); 
      String email = etEmail.getText().toString(); 
      String user = etUsername.getText().toString(); 
      String password = etPassword.getText().toString(); 
      String confirm = etConfirm.getText().toString(); 

Wenn Passwort gleich bestätigen, dann speichern Sie alles in der oben erstellten Datenbank java sqlite.
Wenn Passwort und Passwort bestätigen nicht übereinstimmen, wird eine Toast-Meldung angezeigt, dass die Passwörter nicht übereinstimmen.

  if (password.equalsIgnoreCase(confirm)) { 
       Contact c = new Contact(); // Uses the contact class created earlier 
       c.setName(name); 
       c.setEmail(email); 
       c.setUsername(user); 
       c.setPassword(password); 

       registerDB.insertContact(c); 
       startActivity(new Intent(RegisterActivity.this,LogIn.class)); 
      } 
      else { 
       // Pop up message 
       Toast pass = Toast.makeText(RegisterActivity.this, "Passwords Dont Match!", Toast.LENGTH_SHORT); 
       pass.show(); 
      } 

     } 
    } 
+3

Was ist die Frage? – robotlos

+0

Ist '} Code hier eingeben in' searchPass() 'absichtlich, oder ..? – BadCash

+0

Sorry die Frage ist, dass, wenn ich versuche, mich einzuloggen, passiert nichts HomeScreenActivity und kein Code hier eingeben soll nicht da sein Ich denke, das Problem ist in der LogIn und DataBase-Klasse in der LogIn-Klasse die onClick-Methode nicht was tut Es sollte sein und in der DataBaseHelper-Klasse denke ich, dass das Problem innerhalb der Searchpass-Methode liegt – Chris

Antwort

0

Android die direkt SQLiteDatabase Klasse mithilfe dieser Klasse bieten Ihnen die Daten aus der Datenbank zugreifen können, keine Notwendigkeit

SQLiteDatabase db=openOrCreateDatabase("avishbarcodes.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); 
      db.setLocale(Locale.getDefault()); 

Erstellen Sie die Tabelle wie folgt die DatabaseHelper Klasse schreiben ..

  String createtable="CREATE TABLE IF NOT EXISTS eannumbers(_id INTEGER PRIMARY KEY AUTOINCREMENT,count NUMBER,ean_no TEXT)"; 
     db.execSQL(createtable); 

Lesen Sie die Werte aus der Datenbank wie folgt ..

 String selectquery= "select * from eannumbers"; 
     Cursor c=db.rawQuery(selectquery, null); 
     if(c==null){ 

     }else if(c.getCount()<=0){ 

     }else{ 
      while(c.moveToNext()){ 
      String ean_no=c.getString(c.getColumnIndex("ean_no")); 
      } 
     c.close(); 
     } 

greifen nicht die Spaltenwerte wie folgt ..

cursor.getString (1);

folgen auf diese Weise seine besseren Weg ..

c.getString (c.getColumnIndex ("ean_no"));

, wenn der Benutzer das Kontroll Login-Button klicken wie diese

btn_login.setOnClickListener (neu OnClickListener() {

 @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

        String selectquery= "select * from login"; 
       Cursor c=db.rawQuery(selectquery, null); 
         if(c==null){ 
         }else if(c.getCount()<=0){ 
         }else{ 
          while(c.moveToNext()){ 

       String email=c.getString(c.getColumnIndex("emailid")); 
       String pwd=c.getString(c.getColumnIndex("pwd")); 

           } 
          c.close(); 
          } 

      } 
     }); 

wie dies tun .. es funktioniert ...

Verwandte Themen