SQLite: Unable to print all rows

Viewed 187

I have build an Android application, where I'm using Sqlite Database. Here I have written a getAllContacts, and i want to print all rows in a for loop.

But when I have stored 5rows of data, and when getAllContacts is executed, only the last row data are printed, but not the rest(Please Help me in printing all rows). I don't understand where i have gone wrong, please Correct me. Thank You in Advance

Here is my DataBaseCOde :

public List<SqlContact> getAllContacts() {
    List<SqlContact> contactList = new ArrayList<SqlContact>();
    String selectQuery = "SELECT  * FROM " + CONTACTS_TABLE_NAME;
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);


    if (cursor.moveToFirst()) {

        do {
            SqlContact contact = new SqlContact();

            contact.setId((cursor.getString(0)));
            contact.setDescription(cursor.getString(1));
            contact.setMessage(cursor.getString(2));
            contact.setStatus(cursor.getString(3));
            contact.setTimestamp(cursor.getString(4));
            contact.setType(cursor.getString(5));

            contactList.add(contact);


        } while (cursor.moveToNext());
    }


    return contactList;
}

Here is my Activity Code (For loop to print all Rows) :

                SqlDatabaseNotification db = new SqlDatabaseNotification(getApplicationContext());


                List<SqlContact> contacts = db.getAllContacts();
                for (SqlContact cn : contacts) {

                    String log = "Id: " + cn.getStatus() + " ,Description: " + cn.getDescription() + " ,Message: " + cn.getMessage() + " ,Status: " + cn.getStatus()
                            + " ,TimeStamp: " + cn.getTimestamp() + " ,Type: " + cn.getType();
                    // Writing Contacts to log
                    Log.d("Name: ", log);



                }

Complete SQLITEDATABASE :

public class SqlDatabaseNotification extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "MyDBName.db";
    public static final String CONTACTS_TABLE_NAME = "contacts";
    public static final String CONTACTS_COLUMN_ID = "id";
    public static final String CONTACTS_COLUMN_DESCRIPTION = "description";
    public static final String CONTACTS_COLUMN_STATUS = "status";
    public static final String CONTACTS_COLUMN_TIMESTAMP = "timestamp";
    public static final String CONTACTS_COLUMN_TYPE = "type";
    public static final String CONTACTS_COLUMN_MESSAGE = "message";
    private HashMap hp;


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

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL(
                "create table contacts " +
                        "(id integer primary key, description text,message text,status text, timestamp text,type text)"
        );
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS contacts");
        onCreate(db);
    }

    void addContact(SqlContact contact) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues contentValues = new ContentValues();
        contentValues.put("id", contact.getID());
        contentValues.put("description", contact.getDescription());
        contentValues.put("message", contact.getMessage());
        contentValues.put("status", contact.getStatus());
        contentValues.put("timestamp", contact.getTimestamp());
        contentValues.put("type", contact.getType());
        db.insert("contacts", null, contentValues);


        db.close(); // Closing database connection
    }


    SqlContact getContact(int id) {
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query(CONTACTS_TABLE_NAME, new String[]{CONTACTS_COLUMN_ID,
                        CONTACTS_COLUMN_DESCRIPTION, CONTACTS_COLUMN_MESSAGE, CONTACTS_COLUMN_STATUS, CONTACTS_COLUMN_TIMESTAMP, CONTACTS_COLUMN_TYPE}, CONTACTS_COLUMN_ID + "=?",
                new String[]{String.valueOf(id)}, null, null, null, null);
        if (cursor != null)
            cursor.moveToFirst();

        SqlContact contact = new SqlContact(Integer.parseInt(cursor.getString(0)),
                cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5));
        // return contact

        return contact;
    }


    public List<SqlContact> getAllContacts() {
        List<SqlContact> contactList = new ArrayList<SqlContact>();
        // Select All Query
        String selectQuery = "SELECT  * FROM " + CONTACTS_TABLE_NAME;
//        closeDB();
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);



        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {

            do {
                SqlContact contact = new SqlContact();

                contact.setID(Integer.parseInt((cursor.getString(0))));
                contact.setDescription(cursor.getString(1));
                contact.setMessage(cursor.getString(2));
                contact.setStatus(cursor.getString(3));
                contact.setTimestamp(cursor.getString(4));
                contact.setType(cursor.getString(5));

                // Adding contact to list
                contactList.add(contact);


            } while (cursor.moveToNext());
        }


        // return contact list
        return contactList;
    }

    public void closeDB() {
        SQLiteDatabase db = this.getReadableDatabase();
        if (db != null && db.isOpen())
            db.close();
    }

    public int updateContact(SqlContact contact) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(CONTACTS_COLUMN_ID, contact.getID());
        values.put(CONTACTS_COLUMN_DESCRIPTION, contact.getDescription());
        values.put(CONTACTS_COLUMN_STATUS, contact.getStatus());
        values.put(CONTACTS_COLUMN_TIMESTAMP, contact.getTimestamp());
        values.put(CONTACTS_COLUMN_TYPE, contact.getType());
        values.put(CONTACTS_COLUMN_MESSAGE, contact.getMessage());

        // updating row
        return db.update(CONTACTS_TABLE_NAME, values, CONTACTS_COLUMN_ID + " = ?",
                new String[]{String.valueOf(contact.getStatus())});
    }

    // Deleting single contact
    public void deleteContact(SqlContact contact) {
        SQLiteDatabase db = this.getWritableDatabase();

        db.execSQL("delete from " + CONTACTS_TABLE_NAME);


//        db.delete(CONTACTS_TABLE_NAME, CONTACTS_COLUMN_ID + " = ?",
//                new String[] { String.valueOf(contact.getStatus()) });
        db.close();
    }

    // Getting contacts Count
    public int getContactsCount() {
        String countQuery = "SELECT  * FROM " + CONTACTS_TABLE_NAME;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        cursor.close();

        // return count
        return cursor.getCount();
    }

}

My Contacts Class:

public class SqlContact {

    private int _id;
    private String description;
    private String message;
    private String status;
    private String timestamp;
    private String type;

    public SqlContact(int id, String description, String message, String status, String timestamp, String type) {

        this._id = id;
        this.description = description;
        this.message = message;
        this.status = status;
        this.timestamp = timestamp;
        this.type = type;

    }


    public SqlContact() {

    }


    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(String timestamp) {
        this.timestamp = timestamp;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public int getID() {
        return this._id;
    }

    // setting id
    public void setID(int id) {
        this._id = id;
    }
}
4 Answers
Related