Hasan Hasan - 21 days ago 5
Java Question

signup button linked to sqlite database

public void onSignUpClick(View v){
if(v.getId() == R.id.btnRegister)
{
EditText name = (EditText)findViewById(R.id.TFname);
EditText email = (EditText)findViewById(R.id.TFemail);
EditText pass1 = (EditText)findViewById(R.id.TFpass1);
EditText pass2 = (EditText)findViewById(R.id.TFpass2);

String namestr = name.getText().toString();
String emailstr = name.getText().toString();
String pass1str = name.getText().toString();
String pass2str = name.getText().toString();

if(!pass1str.equals(pass2str))
{
//popup msg:
Toast tpass = Toast.makeText(signup.this, "passwords don't match", Toast.LENGTH_LONG);
tpass.show();
}
else
{
//insert the details in DB:
Contact c = new Contact();
c.setName(namestr);
c.setEmail(emailstr);
c.setPass(pass1str);

helper.insertContact(c);
}

}
}


I'm trying to make a signup form linked to sqlite database. the registraion button that's linked to onSignUpClick method doesn't work. any help to fix this error?

Answer

I have implemented a similar functionality to my app.. You can use this as a reference.You need to add whatever elements needed for your signup activity.

1. Create a database handler for your sqlite application.(DatabaseHandler.java)

import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHandler extends SQLiteOpenHelper {

    public DatabaseHandler(Context context, Object name,
                           Object factory, int version) {
        // TODO Auto-generated constructor stub
        super(context,  DATABASE_NAME, null, DATABASE_VERSION);
    }


    String password;
    // Database Version
    private static final int DATABASE_VERSION = 1;
    // Database Name
    private static final String DATABASE_NAME = "Mydatabase.db";

    // Contacts table name
    private static final String TABLE_REGISTER= "register";
    public static final String KEY_EMAIL_ID="email_id";
    public static final String KEY_MOB_NO = "mobile_number";
    public static final String KEY_PASSWORD = "password";
    public static final String CREATE_TABLE="CREATE TABLE " + TABLE_REGISTER + "("
            + KEY_EMAIL_ID+ " TEXT,"
            + KEY_MOB_NO + " TEXT," + KEY_PASSWORD + " TEXT " + ")";

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL(CREATE_TABLE);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_REGISTER);

        // Create tables again
        onCreate(db);
    }

    void addregister(UserRegister registerdata)
    // code to add the new register
    {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(KEY_EMAIL_ID, registerdata.getEmailId());//register email id
        values.put(KEY_MOB_NO, registerdata.getMobNo());//register mobile no
        values.put(KEY_PASSWORD, registerdata.getPassword());
        // Inserting Row

        db.insert(TABLE_REGISTER, null, values);
        db.close(); // Closing database connection

    }



    //code to get the register
    String getregister(String username){
        SQLiteDatabase db = this.getReadableDatabase();
        //String selectquery="SELECT * FROM TABLE_REGISTER";
        Cursor cursor=db.query(TABLE_REGISTER,null,  "email_id=?",new String[]{username},null, null, null, null);

        if(cursor.getCount()<1){
            cursor.close();
            return "Not Exist";
        }
        else if(cursor.getCount()>=1 && cursor.moveToFirst()){

            password = cursor.getString(cursor.getColumnIndex(KEY_PASSWORD));
            cursor.close();

        }
        return password;


    }


    public String getDatabaseName() {
        return DATABASE_NAME;
    }


    public static String getTableContacts() {
        return TABLE_REGISTER;
    }

    public static int getDatabaseVersion() {
        return DATABASE_VERSION;
    }

}

2. Create a modal class UserRegister

public class UserRegister {

    //private variables

    String email_id;
    String mobile_number;
    String password;




    // Empty constructor
    public UserRegister(){}

    // constructor
    public UserRegister( String email_id,String mobile_number, String password){
    this.email_id=email_id;
    this.mobile_number=mobile_number;
    this.password = password;
    }

    public String getEmailId() {
    return email_id;
    }

    public void setEmailId(String email_id){
    this.email_id = email_id;
    }

    public String getMobNo() {
    // TODO Auto-generated method stub
    return mobile_number;
    }

    public void setMobNo(String mobile_number){
    this.mobile_number=mobile_number;
    }

public String getPassword() {
    return password;
    }

public void setPassword(String password) {
    this.password = password;
    }

}

3.Create the RegistrationActivity

  public class Registration_Activity extends AppCompatActivity {

    EditText reg_email,reg_phone,reg_password;
    Button reg_button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register);
        final DatabaseHandler db = new DatabaseHandler(this, null, null, 2);
        reg_email = (EditText)findViewById(R.id.reg_email);
        reg_phone = (EditText)findViewById(R.id.reg_phone);
        reg_password = (EditText) findViewById(R.id.reg_password);
        reg_button = (Button)findViewById(R.id.reg_button);
        final String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";

        reg_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String email = reg_email.getText().toString();
                String phone = reg_phone.getText().toString();
                String password = reg_password.getText().toString();
                if (email.matches(emailPattern)) {
                    DatabaseHandler db = new DatabaseHandler(Registration_Activity.this, null, null, 2);
                    UserRegister userRegister = new UserRegister();
                    userRegister.setEmailId(email);
                    userRegister.setMobNo(phone);
                    userRegister.setPassword(password);
                    db.addregister(userRegister);
                    Toast.makeText(getApplicationContext(), "Account Created", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(Registration_Activity.this, Login_Activity.class);
                    startActivity(intent);
                    Registration_Activity.this.finish();
                }
                else
                {
                    Toast.makeText(getApplicationContext(),"Enter a valid Email Address",Toast.LENGTH_SHORT).show();
                }

            }
        });

    }
}

4. Login_Activity

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

public class Login_Activity extends AppCompatActivity {

    TextView signup;
    String email,password;
    EditText log_username,log_password;
    Button login_button;
    DatabaseHandler db;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        signup = (TextView)findViewById(R.id.signup);
        String htmlString="<u>Signup</u>";
        signup.setText(Html.fromHtml(htmlString));
        log_username = (EditText)findViewById(R.id.log_username);
        log_password = (EditText)findViewById(R.id.log_password);
        login_button = (Button)findViewById(R.id.login_button);

        login_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                db=new DatabaseHandler(Login_Activity.this, null, null, 2);
                email = log_username.getText().toString();
                password = log_password.getText().toString();
                String StoredPassword =db.getregister(email);
                if(password.equals(StoredPassword)){

                    Toast.makeText(getApplicationContext(),"Login Successfully", Toast.LENGTH_LONG).show();
                    Intent intent = new Intent(Login_Activity.this,VideoActivity.class);
                    startActivity(intent);
                    Login_Activity.this.finish();

                }
                else{
                    Toast.makeText(getApplicationContext(), "Username/Password incorrect", Toast.LENGTH_LONG).show();
                    log_username.setText("");
                    log_password.setText("");
                }



            }
        });




        signup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Login_Activity.this,Registration_Activity.class);
                startActivity(intent);
                Login_Activity.this.finish();
            }
        });

    }
}