Android Studio, how to retrieve data from Sqlite database and display it into textview?

59,417

Here is an example of how I achieved this.

In this example I will store, retrieve, update and delete a students name and age.


First create a class, I called mine

DBManager.java

public class DBManager {
    private Context context;
    private SQLiteDatabase database;
    private SQLiteHelper dbHelper;

    public DBManager(Context c) {
        this.context = c;
    }

    public DBManager open() throws SQLException {
        this.dbHelper = new SQLiteHelper(this.context);
        this.database = this.dbHelper.getWritableDatabase();
        return this;
    }

    public void close() {
        this.dbHelper.close();
    }

    public void insert(String name, String desc) {
        ContentValues contentValue = new ContentValues();
        contentValue.put(SQLiteHelper.NAME, name);
        contentValue.put(SQLiteHelper.AGE, desc);
        this.database.insert(SQLiteHelper.TABLE_NAME_STUDENT, null, contentValue);
    }


    public Cursor fetch() {
        Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_STUDENT, new String[]{SQLiteHelper._ID, SQLiteHelper.NAME, SQLiteHelper.AGE}, null, null, null, null, null);
        if (cursor != null) {
            cursor.moveToFirst();
        }
        return cursor;
    }

    public int update(long _id, String name, String desc) {
        ContentValues contentValues = new ContentValues();
        contentValues.put(SQLiteHelper.NAME, name);
        contentValues.put(SQLiteHelper.AGE, desc);
        return this.database.update(SQLiteHelper.TABLE_NAME_STUDENT, contentValues, "_id = " + _id, null);
    }

    public void delete(long _id) {
        this.database.delete(SQLiteHelper.TABLE_NAME_STUDENT, "_id=" + _id, null);
    }
}

Then create a SQLiteOpenHelper I called mine

SQLiteHelper.java

public class SQLiteHelper extends SQLiteOpenHelper {
    public static final String AGE = "age";
    private static final String CREATE_TABLE_STUDENT = " create table STUDENTS ( _id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL , age TEXT );";
    private static final String DB_NAME = "STUDENTS.DB";
    private static final int DB_VERSION = 1;
    public static final String NAME = "name";
    public static final String TABLE_NAME_STUDENT = "STUDENTS";
    public static final String _ID = "_id";

    public SQLiteHelper(Context context) {
        super(context, DB_NAME, null, 1);
    }

    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_STUDENT);
    }

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

TO ADD:

In this example I take the text from EditText and when the button is clicked I check if the EditText is empty or not. If it is not empty and the student doesn't already exist I insert the students name and age into the database. I display a Toast, letting the user know of the status:

btnAdd.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if (edtName.getText().toString().trim().length() == 0) {
            Toast.makeText(getApplicationContext(), "Please provide your students name", Toast.LENGTH_SHORT).show();
        } else{
            try {
                if (edtAge.getText().toString().trim().length() != 0) {
                    String name = edtName.getText().toString().trim();
                    String age = edtAge.getText().toString().trim();
                    String query = "Select * From STUDENTS where name = '"+name+"'";
                    if(dbManager.fetch().getCount()>0){
                        Toast.makeText(getApplicationContext(), "Already Exist!", Toast.LENGTH_SHORT).show();
                    }else{
                        dbManager.insert(name, age);
                        Toast.makeText(getApplicationContext(), "Added successfully!", Toast.LENGTH_SHORT).show();                           
                    }

                } else {
                    Toast.makeText(getApplicationContext(), "please provide student age!", Toast.LENGTH_SHORT).show();                           
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }  
});

TO UPDATE:

Here I take the Text in EditText and update the student when the button is clicked. You can also place the following in a try/catch to make sure it is updated successfully.

btnupdate.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String name = nameText.getText().toString();
        String age = ageText.getText().toString();
        dbManager.update(_id, name, age);
        Toast.makeText(getApplicationContext(), "Updated successfully!", Toast.LENGTH_SHORT).show();
    }
});

TO DELETE:

dbManager.delete(_id);
Toast.makeText(getApplicationContext(), "Deleted successfully!", Toast.LENGTH_SHORT).show();

TO GET:

Here I get the name of the student and display it in a TextView

DBManager dbManager = new DBManager(getActivity());
dbManager.open();

Cursor cursor = dbManager.fetch();
cursor.moveToFirst();
final TextView studentName = (TextView) getActivity().findViewById(R.id.nameOfStudent);
studentName.settext(cursor.getString(0));
Share:
59,417
Ra Isse
Author by

Ra Isse

Freelancer android developer. 4 years of developing android apps.

Updated on April 06, 2021

Comments

  • Ra Isse
    Ra Isse about 3 years

    I created an SQLite Database in my app, and I insert the data into it. And now I want to retrieve data from it but I want just insert one data and retrieve it then display it into a TextView.

    public class Db_sqlit extends SQLiteOpenHelper{
    
        String TABLE_NAME = "BallsTable";
    
        public final static String name = "db_data";
    
        public Db_sqlit(Context context) {
            super(context, name, null, 1);
        }
    
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("create table "+TABLE_NAME+" (id INTEGER PRIMARY KEY AUTOINCREMENT, ball 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 balls){
          SQLiteDatabase db = this.getWritableDatabase();
          ContentValues contentValues = new ContentValues();
    
          contentValues.put("ball",balls);
    
          long result = db.insert(TABLE_NAME,null,contentValues);
          if(result == -1){
              return false;
          }
          else
              return true;
        }
    
        public void list_balls(TextView textView) {
    
            Cursor res = this.getReadableDatabase().rawQuery("select ball from "+TABLE_NAME+"",null);
            textView.setText("");
            while (res.moveToNext()){
                textView.append(res.getString(1));
            }  
        }
    }
    
  • Ra Isse
    Ra Isse almost 7 years
    thank u so much for your effort but i dont want to get the data from textview and insert it to data. i want to retrieve data from db_sqlit and when i retrieve it then i will set it in a textview
  • Ra Isse
    Ra Isse almost 7 years
    yes , and i want to retrieve it but i insert just one string and i want to retrieve it not retrieve all data and when i retrieve it i want to set it into textview
  • Ra Isse
    Ra Isse almost 7 years
    i saw your update but sorry i dont know how to write it . i dont find method openDatabase() and the object myDatabaseHelper please can u do another way?
  • HB.
    HB. almost 7 years
    I will be updating how I did it then you can decide how you want to do it
  • Dibas Dauliya
    Dibas Dauliya almost 4 years
    hello @HB. can you please help me with this stackoverflow.com/questions/61927770/fetch-text-from-sq-lite too?
  • Minhajul Islam Niloy
    Minhajul Islam Niloy about 3 years
    This is okay but problem comes next
  • Lars Nielsen
    Lars Nielsen about 3 years
    When you provide an answer, do not just provide a block of code. Please elaborate on what the code does and why it will solve the issue.