How to create a simple SignUp(Email, UserName, Password) to sqlite. Then SignIn / LogIn using their UserName & Password ?
I tried this code but getting error on Inserting. This code is wrote on SignUp
String user=username.getText().toString();
String pass=password.getText().toString();
String mail=email.getText().toString();
if ((user.matches(""))||(pass.matches(""))||(mail.matches(""))) {
Log.d("SignUp", "Vacant Field");
return;
}
else {
DatabaseAdapter dbadapter=new DatabaseAdapter(null);
dbadapter.insertdata(user, pass, mail);
Log.d("SignUp", "Data's stored in SQLite");
}
In the DatabaseAdapter class I used this code
public class DatabaseAdapter {
static final String DATABASE_NAME = "login.db";
static final int DATABASE_VERSION = 1;
public static final int NAME_COLUMN = 1;
// SQL to Create a new Database
static final String DATABASE_CREATE= "create table "+"LOGIN"+
"( " +"ID"+" integer primary key autoincrement,"+ "USERNAME text,PASSWORD text, EMAIL text); ";
// Variable to hold the database instance
public SQLiteDatabase db;
// Context of the application using the database.
private final Context context;
// Database open/upgrade helper
private DataBaseHelper dbHelper;
public DatabaseAdapter(Context _context)
{
context = _context;
dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public DatabaseAdapter open() throws SQLException
{
db = dbHelper.getWritableDatabase();
return this;
}
public void close()
{
db.close();
}
public SQLiteDatabase getDatabaseInstance()
{
return db;
}
// to store data`s in SQLite db
public void insertdata(String username, String password, String email)
{
ContentValues values=new ContentValues();
// Assign values for each row.
values.put("USERNAME", username);
values.put("PASSWORD", password);
values.put("EMAIL", email);
Log.d("DatabaseAdapter", "Data's are assin to insert");
// Insert the row into your table
db.insert("LOGIN", null, values);
Log.d("DatabaseAdapter", "Data's stored successfully");
db.close();
}
public String getSingleEntry(String userName)
{
Cursor cursor=db.query("LOGIN", null, " USERNAME=?", new String[]{userName}, null, null, null);
if(cursor.getCount()<1) // UserName Not Exist
{
cursor.close();
return "NOT EXIST";
}
cursor.moveToFirst();
String password= cursor.getString(cursor.getColumnIndex("PASSWORD"));
cursor.close();
return password;
}
}
While pressing SignUp Button am getting error's
FATAL ERROR, Null pointer Exception Error
signup.java (Activity)
package...name;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class signup extends AppCompatActivity {
DatabaseHelper helper = new DatabaseHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
//to link to the second activity
TextView loginScreen = (TextView) findViewById(R.id.link_to_login);
// Listening to Login Screen link
loginScreen.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// Closing registration screen
// Switching to Login Screen/closing register screen
finish();
}
});
}
public void onSignUpClick(View v){
if(v.getId() == R.id.btn_Register)
{
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);
}
}
}
}
DatabaseHelper.java (Class)
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
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 COLUMN_ID = "id";
private static final String COLUMN_NAME = "name";
private static final String COLUMN_EMAIL = "email";
private static final String COLUMN_UNAME = "uname";
private static final String COLUMN_PASS = "pass";
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, uname text not null, pass 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;
}
public void insertContact(Contact c)
{
db = this.getWritableDatabase();
ContentValues values = new ContentValues();
//create a string query
String query = "select * from contacts ";
Cursor cursor = db.rawQuery(query, null);
int count = cursor.getCount();
values.put(COLUMN_ID, count);
values.put(COLUMN_NAME, c.getName());
values.put(COLUMN_EMAIL, c.getEmail());
values.put(COLUMN_PASS, c.getPass());
//this will insert the content in the database
db.insert(TABLE_NAME, null, values);
db.close();
}
public String searchPass(String name){
db = this.getReadableDatabase();
String query = "select name, pass from" +TABLE_NAME;
Cursor cursor = db.rawQuery(query, null);
String a, b;
b="not found";
if(cursor.moveToFirst()){
do{
a=cursor.getString(0);
if(a.equals(name)){
b=cursor.getString(1);
break;
}
}
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);
}
}
Contact.java (class)
public class Contact {
String name, email, uname, pass;
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
public void setEmail(String email)
{
this.email = email;
}
public String getEmail()
{
return this.email;
}
public void setUname(String uname)
{
this.uname = uname;
}
public String getUname()
{
return this.uname;
}
public void setPass(String pass)
{
this.pass = pass;
}
public String getPass()
{
return this.pass;
}
}
Login.java (Activity)
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Login extends Activity {
DatabaseHelper helper = new DatabaseHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
TextView registerScreen = (TextView) findViewById(R.id.link_to_signup);
// Listening to register new account link
registerScreen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Switching to Register screen
Intent i = new Intent(getApplicationContext(), signup.class);
startActivity(i);
}
});
}
public void onSigninClick(View v){
if(v.getId() == R.id.btnLogin)
{
EditText a = (EditText)findViewById(R.id.TFname);
String str = a.getText().toString();
EditText b = (EditText)findViewById(R.id.TFpassword);
String pass = a.getText().toString();
String password = helper.searchPass(str);
if(pass.equals(password))
{
Intent i = new Intent(Login.this, signup.class);
i.putExtra("name" , str);
startActivity(i);
}
else{//popup msg:
Toast temp = Toast.makeText(Login.this, "username & passwords don't match", Toast.LENGTH_LONG);
temp.show();}
}
}
}
Display.java (Activity)
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class Display extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
String name = getIntent().getStringExtra("name");
TextView tv = (TextView)findViewById(R.id.TFname);
tv.setText(name);
}
}