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)); } } }
Answer
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));