himanshu
himanshu

Reputation: 1980

Getting NullPointer Exception Error while creating and fetching the data from database in android

Hello folks after a long time I am posting any query here. I am getting a NullPointer Exception Error in the following code:-

public class DBAdapter {

int id = 0;
public static final String KEY_ROWID = "_id";
public static final String KEY_FNAME = "FirstName";
public static final String KEY_LNAME = "LastName";
public static final String KEY_EMAILID = "Email";
public static final String KEY_PASSWORD = "Password";
private static final String TAG = "DBAdapter";

private static final String DATABASE_NAME = "UserDetail";
private static final String DATABASE_TABLE = "tblUserDetail";

private static final int DATABASE_VERSION = 1;

private static final String DATABASE_CREATE =  "create table tblUserDetail (_id integer primary key autoincrement, "
        + "FirstName text not null, LastName text, Email text not null, Password text not null );";

private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;

public DBAdapter(Context ctx){
    this.context = ctx;
    DBHelper = new DatabaseHelper(ctx);
}

private static class DatabaseHelper extends SQLiteOpenHelper{

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

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
            db.execSQL(DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
            Log.w(TAG, "Upgrading database version from"+ oldVersion +
                    "to"+ newVersion +", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXIST tblUserDetail");
            onCreate(db);
    }
}

    public DBAdapter open() throws SQLException{

        db = DBHelper.getWritableDatabase();
        return this;

    }

    public void close(){
        DBHelper.close();
    }

    public long insertData(String fName,String lName, String emailId, String password){
        ContentValues intialValues = new ContentValues();
        intialValues.put(KEY_FNAME, fName);
        intialValues.put(KEY_LNAME, lName);
        intialValues.put(KEY_EMAILID, emailId);
        intialValues.put(KEY_PASSWORD, password);
        return db.insert(DATABASE_TABLE, null, intialValues);
    }

    public String getAllEntries()
    {
        SQLiteDatabase database = DBHelper.getReadableDatabase();

        Cursor cursor = database.rawQuery(
                    "SELECT FirstName FROM tblUserDetail WHERE _id = 1", null);
                if(cursor.moveToFirst()) {
                    return cursor.getString(0);
                }
                return cursor.getString(0);

    }

}

I am calling insertData and getAllEntries on a button click:-

Submit.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
    //      Toast toast = Toast.makeText(getApplicationContext(), "cliecked on submit button", Toast.LENGTH_LONG);
    //      toast.show();

            String str;
            try{
                db.insertData(etFN.getText().toString(), etLN.getText().toString(), etEI.getText().toString(), etPS.getText().toString());

                str = db.getAllEntries();

                Toast toast = Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG);
                toast.show();
            }

            catch(Exception ex){
                 Context context = getApplicationContext();
                 CharSequence text = ex.toString();
                 int duration = Toast.LENGTH_LONG;

                 Toast toast = Toast.makeText(context, text, duration);
                 toast.show();
            }

        } 
    });

Please help me to get rid of this NullPointer Exception Error.Every help will be highly appreciated.

I am getting the error on db.insertData() line.

Upvotes: 0

Views: 182

Answers (1)

Piyush
Piyush

Reputation: 18923

It happens may be with two reasons.

1) If you have not initialized your DBADapter object. You have just declared it.

so initialize it

 db = new DBAdapter(this);

2) You have not open or close your database before insert data into database. So first open your database before insert data into it.

Thanks!!

Upvotes: 1

Related Questions