How to perform various operations like Add, Edit, Delete, Update records on SQLite database in android app via User.
SQLite database is one of the most common way to store text based values in android applications, The values can be multiple type of like Text messages, Call logs, Social networking chatting applications user chats, Browser history, File logs, Error logs, User data. SQLite database is uniquely developed for gives us the ability to create local database inside our android application to store data locally and as we all know that if there is a database available then also there are the options available to create tables inside it. The method of creating database and tables is completely based upon queries and commands which we have pass in our android program. So here is the complete step by step tutorial for Android SQLite Insert Update Delete Display data example tutorial with source code download.
Brief review about this project : Inside this project we are performing various operations on SQLite database with multiple activity enviournment and every activity has is own task And as a developer I suggest you to download the whole project and import this project into Eclipse or Android studio and run it into Emulator, Enjoy .
About this project :
List of Activities inside this project :
- MainActivity.java .
- EditDataActivity.java .
- ListViewActivity.java .
List of Layout XML files inside this project :
- activity_main.xml .
- activity_edit_data.xml .
- activity_list_view.xml .
- listviewdatalayout.xml .
List of listAdapter classes java files :
- SQLiteHelper.java .
- SQLiteListAdapter.java .
Android SQLite Insert Update Delete Display data example tutorial source code starts from here .
Code for MainActivity.java file.
package com.sqlitetutorial_android_examples.com; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { EditText GetName,GetPhoneNumber,GetSubject ; Button Submit, EditData, DisplayData; SQLiteDatabase SQLITEDATABASE; String Name, PhoneNumber, Subject ; Boolean CheckEditTextEmpty ; String SQLiteQuery ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GetName = (EditText)findViewById(R.id.editText1); GetPhoneNumber = (EditText)findViewById(R.id.editText2); GetSubject = (EditText)findViewById(R.id.editText3); Submit = (Button)findViewById(R.id.button1); EditData = (Button)findViewById(R.id.button2); DisplayData = (Button)findViewById(R.id.button3); Submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub DBCreate(); SubmitData2SQLiteDB(); } }); EditData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MainActivity.this, EditDataActivity.class); startActivity(intent); } }); DisplayData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MainActivity.this, ListViewActivity.class); startActivity(intent); } }); } public void DBCreate(){ SQLITEDATABASE = openOrCreateDatabase("DemoDataBase", Context.MODE_PRIVATE, null); SQLITEDATABASE.execSQL("CREATE TABLE IF NOT EXISTS demoTable(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR, phone_number VARCHAR, subject VARCHAR);"); } public void SubmitData2SQLiteDB(){ Name = GetName.getText().toString(); PhoneNumber = GetPhoneNumber.getText().toString(); Subject = GetSubject.getText().toString(); CheckEditTextIsEmptyOrNot( Name,PhoneNumber, Subject); if(CheckEditTextEmpty == true) { SQLiteQuery = "INSERT INTO demoTable (name,phone_number,subject) VALUES('"+Name+"', '"+PhoneNumber+"', '"+Subject+"');"; SQLITEDATABASE.execSQL(SQLiteQuery); Toast.makeText(MainActivity.this,"Data Submit Successfully", Toast.LENGTH_LONG).show(); ClearEditTextAfterDoneTask(); } else { Toast.makeText(MainActivity.this,"Please Fill All the Fields", Toast.LENGTH_LONG).show(); } } public void CheckEditTextIsEmptyOrNot(String Name,String PhoneNumber, String subject ){ if(TextUtils.isEmpty(Name) || TextUtils.isEmpty(PhoneNumber) || TextUtils.isEmpty(Subject)){ CheckEditTextEmpty = false ; } else { CheckEditTextEmpty = true ; } } public void ClearEditTextAfterDoneTask(){ GetName.getText().clear(); GetPhoneNumber.getText().clear(); GetSubject.getText().clear(); } }
Code for EditDataActivity.java file.
package com.sqlitetutorial_android_examples.com; import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class EditDataActivity extends Activity { Button nextbutton, previousbutton, updatebutton, deletebutton; EditText name, phoneNumber, SubJect; SQLiteDatabase SQLITEDATABASE, SQLITEDATABASE2 ; String GetSQliteQuery, UpdateRecordQuery, DeleteQuery ; Cursor cursor, cursorCheckDataIsEmptyOrNot ; TextView idtextview; Boolean CheckEditTextEmpty; String GetName,GetPhoneNumber,GetSubject ; int UserID ; String ConvertUserID ; SQLiteHelper SQLITEHELPER; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit_data); nextbutton = (Button)findViewById(R.id.button1); previousbutton = (Button)findViewById(R.id.button2); updatebutton = (Button)findViewById(R.id.button3); deletebutton = (Button)findViewById(R.id.button4); name = (EditText)findViewById(R.id.editText1); phoneNumber = (EditText)findViewById(R.id.editText2); SubJect = (EditText)findViewById(R.id.editText3); idtextview = (TextView)findViewById(R.id.textview1); GetSQliteQuery = "SELECT * FROM demoTable" ; SQLITEDATABASE = openOrCreateDatabase("DemoDataBase", Context.MODE_PRIVATE, null); cursor = SQLITEDATABASE.rawQuery(GetSQliteQuery, null); cursor.moveToFirst(); GetSQLiteDatabaseRecords(); nextbutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (!cursor.isLast()){ cursor.moveToNext(); } GetSQLiteDatabaseRecords(); } }); previousbutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (!cursor.isFirst()){ cursor.moveToPrevious(); } GetSQLiteDatabaseRecords(); } }); updatebutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub GetName = name.getText().toString(); GetPhoneNumber = phoneNumber.getText().toString(); GetSubject = SubJect.getText().toString(); ConvertUserID = idtextview.getText().toString(); UserID = Integer.parseInt(ConvertUserID); UpdateRecordQuery = "UPDATE demoTable SET name='" + GetName + "', phone_number='" + GetPhoneNumber + "', subject='" + GetSubject + "' WHERE id=" + UserID + ";"; CheckEditTextIsEmptyOrNot( GetName,GetPhoneNumber, GetSubject); if (CheckEditTextEmpty == false) { SQLITEDATABASE.execSQL(UpdateRecordQuery); cursor = SQLITEDATABASE.rawQuery(GetSQliteQuery, null); cursor.moveToPosition(UserID); Toast.makeText(EditDataActivity.this,"Data Updated Successfully", Toast.LENGTH_LONG).show(); }else { Toast.makeText(EditDataActivity.this,"Please Fill All the Fields", Toast.LENGTH_LONG).show(); } } }); deletebutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ConvertUserID = idtextview.getText().toString(); UserID = Integer.parseInt(ConvertUserID); DeleteQuery = "DELETE FROM demoTable WHERE id=" + UserID + ";"; SQLITEDATABASE.execSQL(DeleteQuery); Toast.makeText(EditDataActivity.this, "Record Deleted Successfully", Toast.LENGTH_LONG).show(); cursor = SQLITEDATABASE.rawQuery(GetSQliteQuery, null); } }); } public void GetSQLiteDatabaseRecords(){ idtextview.setText(cursor.getString(0)); name.setText(cursor.getString(1).toString()); phoneNumber.setText(cursor.getString(2).toString()); SubJect.setText(cursor.getString(3).toString()); } public void CheckEditTextIsEmptyOrNot(String Name,String PhoneNumber, String subject ){ if(TextUtils.isEmpty(Name) || TextUtils.isEmpty(PhoneNumber) || TextUtils.isEmpty(subject)){ CheckEditTextEmpty = true ; } else { CheckEditTextEmpty = false ; } } }
Code for ListViewActivity.java file.
package com.sqlitetutorial_android_examples.com; import java.util.ArrayList; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.widget.ListView; public class ListViewActivity extends Activity { SQLiteHelper SQLITEHELPER; SQLiteDatabase SQLITEDATABASE; Cursor cursor; SQLiteListAdapter ListAdapter ; ArrayList<String> ID_ArrayList = new ArrayList<String>(); ArrayList<String> NAME_ArrayList = new ArrayList<String>(); ArrayList<String> PHONE_NUMBER_ArrayList = new ArrayList<String>(); ArrayList<String> SUBJECT_ArrayList = new ArrayList<String>(); ListView LISTVIEW; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_view); LISTVIEW = (ListView) findViewById(R.id.listView1); SQLITEHELPER = new SQLiteHelper(this); } @Override protected void onResume() { ShowSQLiteDBdata() ; super.onResume(); } private void ShowSQLiteDBdata() { SQLITEDATABASE = SQLITEHELPER.getWritableDatabase(); cursor = SQLITEDATABASE.rawQuery("SELECT * FROM demoTable", null); ID_ArrayList.clear(); NAME_ArrayList.clear(); PHONE_NUMBER_ArrayList.clear(); SUBJECT_ArrayList.clear(); if (cursor.moveToFirst()) { do { ID_ArrayList.add(cursor.getString(cursor.getColumnIndex(SQLiteHelper.KEY_ID))); NAME_ArrayList.add(cursor.getString(cursor.getColumnIndex(SQLiteHelper.KEY_Name))); PHONE_NUMBER_ArrayList.add(cursor.getString(cursor.getColumnIndex(SQLiteHelper.KEY_PhoneNumber))); SUBJECT_ArrayList.add(cursor.getString(cursor.getColumnIndex(SQLiteHelper.KEY_Subject))); } while (cursor.moveToNext()); } ListAdapter = new SQLiteListAdapter(ListViewActivity.this, ID_ArrayList, NAME_ArrayList, PHONE_NUMBER_ArrayList, SUBJECT_ArrayList ); LISTVIEW.setAdapter(ListAdapter); cursor.close(); } }
Code for SQLiteHelper.java file.
package com.sqlitetutorial_android_examples.com; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class SQLiteHelper extends SQLiteOpenHelper { static String DATABASE_NAME="DemoDataBase"; public static final String KEY_ID="id"; public static final String TABLE_NAME="demoTable"; public static final String KEY_Name="name"; public static final String KEY_PhoneNumber="phone_number"; public static final String KEY_Subject="subject"; public SQLiteHelper(Context context) { super(context, DATABASE_NAME, null, 1); } @Override public void onCreate(SQLiteDatabase database) { String CREATE_TABLE="CREATE TABLE "+TABLE_NAME+" ("+KEY_ID+" INTEGER PRIMARY KEY, "+KEY_Name+" VARCHAR, "+KEY_PhoneNumber+" VARCHAR, "+KEY_Subject+" VARCHAR)"; database.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME); onCreate(db); } }
Code for SQLiteListAdapter.java file.
package com.sqlitetutorial_android_examples.com; import java.util.ArrayList; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class SQLiteListAdapter extends BaseAdapter { Context context; ArrayList<String> userID; ArrayList<String> UserName; ArrayList<String> User_PhoneNumber; ArrayList<String> UserSubject ; public SQLiteListAdapter( Context context2, ArrayList<String> id, ArrayList<String> name, ArrayList<String> phone, ArrayList<String> subject ) { this.context = context2; this.userID = id; this.UserName = name; this.User_PhoneNumber = phone; this.UserSubject = subject ; } public int getCount() { // TODO Auto-generated method stub return userID.size(); } public Object getItem(int position) { // TODO Auto-generated method stub return null; } public long getItemId(int position) { // TODO Auto-generated method stub return 0; } public View getView(int position, View child, ViewGroup parent) { Holder holder; LayoutInflater layoutInflater; if (child == null) { layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); child = layoutInflater.inflate(R.layout.listviewdatalayout, null); holder = new Holder(); holder.textviewid = (TextView) child.findViewById(R.id.textViewID); holder.textviewname = (TextView) child.findViewById(R.id.textViewNAME); holder.textviewphone_number = (TextView) child.findViewById(R.id.textViewPHONE_NUMBER); holder.textviewsubject = (TextView) child.findViewById(R.id.textViewSUBJECT); child.setTag(holder); } else { holder = (Holder) child.getTag(); } holder.textviewid.setText(userID.get(position)); holder.textviewname.setText(UserName.get(position)); holder.textviewphone_number.setText(User_PhoneNumber.get(position)); holder.textviewsubject.setText(UserSubject.get(position)); return child; } public class Holder { TextView textviewid; TextView textviewname; TextView textviewphone_number; TextView textviewsubject; } }
Code for activity_main.xml layout file.