0

I've existing database that have name, surname, email phone and password and I want to use that to make login activity that have two edit text (Email or phone number) & (password).

What is the code behind the login activity??

  • Login (if succeed get the other data)----> ParentsMenu (use the data)

DatabaseHelper.java

package edu.angelo.parentsportal;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;

public class DatabaseHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "Parents_Portal.db";
public static final String TABLE_NAME = "Parents_Table";
public static final String COL_0 = "ID";
public static final String COL_1 = "NAME";
public static final String COL_2 = "SURNAME";
public static final String COL_3 = "EMAIL_ADDRESS";
public static final String COL_4 = "PHONE_NUMBER";
public static final String COL_5 = "PASSWORD";

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

}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME +"(ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, SURNAME TEXT, EMAIL_ADDRESS TEXT, PHONE_NUMBER TEXT, PASSWORD TEXT)");
}

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

public boolean insertData(String name, String surname, String email_address, String phone_number, String password){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL_1,name);
    contentValues.put(COL_2,surname);
    contentValues.put(COL_3,email_address);
    contentValues.put(COL_4,phone_number);
    contentValues.put(COL_5,password);
    long result = db.insert(TABLE_NAME, null , contentValues);
    if (result == -1) {
        return false;
    }
    else {
        return true;
    }
}

public ArrayList<ParentModel> getAllParentsData(){
    ArrayList<ParentModel> list = new ArrayList<>();
    String sql = "select * from " + TABLE_NAME;
    SQLiteDatabase mydb = this.getWritableDatabase();
    Cursor cursor = mydb.rawQuery(sql, null);
    if (cursor.moveToFirst()) {
        do {
            ParentModel parentModel = new ParentModel();
            parentModel.setID(cursor.getString(0));
            parentModel.setName(cursor.getString(1));
            parentModel.setSurname(cursor.getString(2));
            parentModel.setEmail(cursor.getString(3));
            parentModel.setPhone_number(cursor.getString(4));
            parentModel.setPassword(cursor.getString(5));
            list.add(parentModel);
        }
        while (cursor.moveToNext());
    }
    return list;
}

public void updateData(int id, String name , String surname , String email , String phone_number , String password){
   ContentValues contentValues = new ContentValues();
    contentValues.put(COL_1, name);
    contentValues.put(COL_2, surname);
    contentValues.put(COL_3, email);
    contentValues.put(COL_4, phone_number);
    contentValues.put(COL_5, password);

    SQLiteDatabase mydb = this.getWritableDatabase();
    mydb.update(TABLE_NAME, contentValues, COL_0 + "=" + id, null);
    mydb.close();
}

public void deleteParent(int id){
    SQLiteDatabase mydb = this.getWritableDatabase();
    mydb.delete(TABLE_NAME, COL_0 + "=" + id, null);
    mydb.close();
}
}

existing LoginActivity.java

package edu.angelo.parentsportal;

import android.app.ProgressDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Patterns;
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 EditText editTextEmailPhone;
private EditText editTextPassword;
private Button Login;
private ProgressDialog progressDialog;
DatabaseHelper mydb;


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


    editTextEmailPhone = findViewById(R.id.input_username);
    editTextPassword = findViewById(R.id.input_password);
    findViewById(R.id.btn_register).setOnClickListener(Login.this);

    progressDialog = new ProgressDialog(this);
}

@Override
public void onClick(View view) {
    switch (view.getId()){
        case R.id.btn_register: {
            userLogin();
            break;
        }

    }


}


private void userLogin() {
    String email = editTextEmailPhone.getText().toString().trim();
    String password = editTextPassword.getText().toString().trim();

    if (email.isEmpty()) {
        editTextEmailPhone.setError("Email is required");
        editTextEmailPhone.requestFocus();
        return;
    }
    if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
        editTextEmailPhone.setError("Please enter valid email");
        editTextEmailPhone.requestFocus();
        return;
    }
    if (password.isEmpty()) {
        editTextPassword.setError("Password is required");
        editTextPassword.requestFocus();
        return;
    }
    if (password.length()<6 ){
        editTextPassword.setError("Minimum of length of password should be 6");
        editTextPassword.requestFocus();
        return;
    }
    //if the email&pass is not empty
    //display dialog
    else {
        progressDialog.setMessage("Please Wait...");
        progressDialog.show();

        if ((email.equals("parent@gmail.com")) && (password.equals("123456"))) 
{
            progressDialog.dismiss();
            SharedPrefs.saveSharedSetting(this, "CaptainCode", "false");
            Intent intent = new Intent(Login.this, Parent_Home.class);
            Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show();
            startActivity(intent);
            finish();
        }
        else {

            Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
        }
    }
}
}

2 Answers2

2
Add this function to your DatabaseHelper.java

public boolean userExistance(String emailOrPhone, String pwd){

        String sql = "select * from " + TABLE_NAME + " where ("+ COL_3 +" = " + emailOrPhone +" OR "+ COL_4 +" = "+ emailOrPhone+ ") AND " + COL_5 + " = " + pwd;
        SQLiteDatabase mydb = this.getWritableDatabase();
        Cursor cursor = mydb.rawQuery(sql, null);
        if(cursor.getCount() > 0)
            return true;
        else
            return false;

    }

Then add call this function from your LoginActivity.java

DatabaseHelper mydb;
mydb = new DatabaseHelper(LoginActivity.this);
boolean exists = mydb.userExistance();
if(exists)
{
    Intent intent = new Intent(Login.this, Parent_Home.class);
    Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show();
    startActivity(intent);
    finish();
}
Talha Arshad
  • 133
  • 1
  • 10
0

Add below method in your DatabaseHelper class.

public ArrayList<ParentModel> getParentData(String emailOrPhone,String pwd){
ArrayList<ParentModel> list = new ArrayList<>();
String sql = "SELECT * FROM " + TABLE_NAME+" WHERE ("+COL_3+"= "+emailOrPhone+" OR "+COL_4 +" = "+emailOrPhone+") AND "+COL_5 +" = "+pwd;
SQLiteDatabase mydb = this.getWritableDatabase();
Cursor cursor = mydb.rawQuery(sql, null);
if (cursor.moveToFirst()) {
    do {
        ParentModel parentModel = new ParentModel();
        parentModel.setID(cursor.getString(0));
        parentModel.setName(cursor.getString(1));
        parentModel.setSurname(cursor.getString(2));
        parentModel.setEmail(cursor.getString(3));
        parentModel.setPhone_number(cursor.getString(4));
        parentModel.setPassword(cursor.getString(5));
        list.add(parentModel);
    }
    while (cursor.moveToNext());
}
   return list;
}

And use like below code :

if (mydb.getParentData(editTextEmailPhone.getText().toString(),editTextPassword.getText().toString()).size()>0) 
{
progressDialog.dismiss();
SharedPrefs.saveSharedSetting(this, "CaptainCode", "false");
Intent intent = new Intent(Login.this, Parent_Home.class);
Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show();
startActivity(intent);
finish();
}

Don't forget to initialization DatabaseHelper mydb.

Vishal G. Gohel
  • 1,008
  • 1
  • 16
  • 31
  • how i can transfer the data from the selected parent to the next activity after successful login? –  Mar 08 '19 at 11:37
  • check this link : https://stackoverflow.com/questions/21250339/how-to-pass-arraylistcustomeobject-from-one-activity-to-another – Vishal G. Gohel Mar 08 '19 at 11:41
  • i mean when the databasehelper found the email or phone and password, how to add feature that after found, databasehelper can send the other data like id ,name And surname, to the login and the intent send it to the parent_home so it can use the data –  Mar 08 '19 at 13:16
  • `getParentData()` all in one method you can store value which return by `getParentData()` and pass in intent. `ArrayList parentData = mydb.getParentData(editTextEmailPhone.getText().toString(),editTextPassword.getText().toString()) ` and parse `parentData` in intend. i already share link for how to parse `parentData` to another activity. – Vishal G. Gohel Mar 11 '19 at 05:42