Features: - Create SQLite DataBase, Tables, Columns
- INSERT Data
- UPDATE Data
- DELETE Data
- Drop Table IF ALREADY EXIST
Download
Source on GitHub
Step 1 : Create A class for get-set Contacts:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.blogspot.dbh4ck.sqlite_demo_db; | |
/** | |
* Created by DB on 08-03-2016. | |
*/ | |
public class Contact { | |
// private variables | |
public int _id; | |
public String _name; | |
public String _email; | |
// public byte[] _image; | |
public Contact() { | |
} | |
// constructor | |
public Contact(int id, String name, String _email) { | |
this._id = id; | |
this._name = name; | |
this._email = _email; | |
// this._image = image; | |
} | |
public Contact(String valid_name, String valid_email) { | |
this._name = valid_name; | |
this._email = valid_email; | |
// this._image = theImage; | |
} | |
// getting ID | |
public int getID() { | |
return this._id; | |
} | |
// setting id | |
public void setID(int id) { | |
this._id = id; | |
} | |
// getting name | |
public String getName() { | |
return this._name; | |
} | |
// setting name | |
public void setName(String name) { | |
this._name = name; | |
} | |
// getting email | |
public String getEmail() { | |
return this._email; | |
} | |
// setting email | |
public void setEmail(String email) { | |
this._email = email; | |
} | |
// getting Image | |
public void getImage() { | |
// return this._image; | |
return; | |
} | |
// setting Image | |
public void setImage(byte[] image) { | |
// this._image = image; | |
return; | |
} | |
} |
Step 2 : SQL Database Handler class:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.blogspot.dbh4ck.sqlite_demo_db; | |
import android.content.ContentValues; | |
import android.content.Context; | |
import android.database.Cursor; | |
import android.database.DatabaseErrorHandler; | |
import android.database.sqlite.SQLiteDatabase; | |
import android.database.sqlite.SQLiteOpenHelper; | |
import android.util.Log; | |
import java.util.ArrayList; | |
/** | |
* Created by DB on 08-03-2016. | |
*/ | |
public class DatabaseHandler extends SQLiteOpenHelper { | |
// Database Name | |
private static final String DATABASE_NAME = "ContactsManagerDB"; | |
// Database Version | |
private static final int DATABASE_VERSION = 1; | |
// Table Name | |
private static final String TABLE_CONTACTS = "contacts"; | |
// Table Columns Name | |
private static final String KEY_ID = "id"; | |
private static final String KEY_NAME = "name"; | |
private static final String KEY_EMAIL = "email"; | |
// private static final String KEY_IMAGE = "image"; | |
private final ArrayList<Contact> contact_list = new ArrayList<Contact>(); | |
public DatabaseHandler(Context context) { | |
super(context, DATABASE_NAME, null, DATABASE_VERSION); | |
} | |
public DatabaseHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) { | |
super(context, name, factory, version, errorHandler); | |
} | |
@Override | |
public void onCreate(SQLiteDatabase db) { | |
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" | |
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," | |
+ KEY_EMAIL + " TEXT " + ")"; | |
db.execSQL(CREATE_CONTACTS_TABLE); | |
} | |
@Override | |
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { | |
// Drop older Table if already Exist | |
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS); | |
// Create tables again | |
onCreate(db); | |
} | |
// Adding new contact | |
public void Add_Contact(Contact contact) { | |
SQLiteDatabase db = this.getWritableDatabase(); | |
ContentValues values = new ContentValues(); | |
values.put(KEY_NAME, contact.getName()); // Name | |
values.put(KEY_EMAIL, contact.getEmail()); // Email | |
// Inserting Row | |
db.insert(TABLE_CONTACTS, null, values); | |
db.close(); // Close Database Connection | |
} | |
// Getting single contact | |
Contact Get_Contact(int id) { | |
SQLiteDatabase db = this.getReadableDatabase(); | |
Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID, KEY_NAME, KEY_EMAIL }, KEY_ID + "=?", new String[] { String.valueOf(id) }, null, null, null, null); | |
if (cursor != null) | |
cursor.moveToFirst(); | |
Contact contact = new Contact(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2)); | |
// return contact | |
cursor.close(); | |
db.close(); | |
return contact; | |
} | |
// Getting All Contacts | |
public ArrayList<Contact> Get_Contacts() { | |
try { | |
contact_list.clear(); | |
// Select All Query | |
String selectQuery = "SELECT * FROM " + TABLE_CONTACTS; | |
SQLiteDatabase db = this.getWritableDatabase(); | |
Cursor cursor = db.rawQuery(selectQuery, null); | |
// looping through all rows and adding to list | |
if (cursor.moveToFirst()) { | |
do { | |
Contact contact = new Contact(); | |
contact.setID(Integer.parseInt(cursor.getString(0))); | |
contact.setName(cursor.getString(1)); | |
contact.setEmail(cursor.getString(2)); | |
// contact.setImage(cursor.getBlob(3)); | |
// Adding contact to list | |
contact_list.add(contact); | |
} while (cursor.moveToNext()); | |
} | |
// return contact list | |
cursor.close(); | |
db.close(); | |
return contact_list; | |
} catch (Exception e) { | |
// TODO: handle exception | |
Log.e("all_contact", "" + e); | |
} | |
return contact_list; | |
} | |
// Updating single contact | |
public int Update_Contact(Contact contact) { | |
SQLiteDatabase db = this.getWritableDatabase(); | |
ContentValues values = new ContentValues(); | |
values.put(KEY_NAME, contact.getName()); | |
values.put(KEY_EMAIL, contact.getEmail()); | |
// values.put(KEY_IMAGE, contact.getImage()); | |
// updating row | |
return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?", | |
new String[] { String.valueOf(contact.getID()) }); | |
} | |
// Deleting single contact | |
public void Delete_Contact(int id) { | |
SQLiteDatabase db = this.getWritableDatabase(); | |
db.delete(TABLE_CONTACTS, KEY_ID + " = ?", | |
new String[] { String.valueOf(id) }); | |
db.close(); | |
} | |
// Getting contacts Count | |
public int Get_Total_Contacts() { | |
String countQuery = "SELECT * FROM " + TABLE_CONTACTS; | |
SQLiteDatabase db = this.getReadableDatabase(); | |
Cursor cursor = db.rawQuery(countQuery, null); | |
cursor.close(); | |
// return count | |
return cursor.getCount(); | |
} | |
} |
Step 3 : For adding new Contacts and Updating existing contacts here's the class:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.blogspot.dbh4ck.sqlite_demo_db; | |
import android.app.Activity; | |
import android.content.Intent; | |
import android.os.Bundle; | |
import android.text.Editable; | |
import android.text.TextWatcher; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.EditText; | |
import android.widget.LinearLayout; | |
import android.widget.Toast; | |
public class Add_Update_User extends Activity { | |
// Bitmap theImage; | |
// ImageView imageDetail; | |
EditText add_name, add_email; | |
Button add_save_btn, add_view_all, update_btn, update_view_all; | |
LinearLayout add_view, update_view; | |
String valid_email = null, valid_name = null, Toast_msg = null, valid_user_id = ""; | |
int USER_ID, imageId; | |
DatabaseHandler dbHandler = new DatabaseHandler(this); | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
// TODO Auto-generated method stub | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.add_update_screen); | |
// set screen | |
Set_Add_Update_Screen(); | |
// set visibility of view as per activity calls | |
String called_from = getIntent().getStringExtra("called"); | |
if (called_from.equalsIgnoreCase("add")) { | |
add_view.setVisibility(View.VISIBLE); | |
update_view.setVisibility(View.GONE); | |
} else { | |
update_view.setVisibility(View.VISIBLE); | |
add_view.setVisibility(View.GONE); | |
USER_ID = Integer.parseInt(getIntent().getStringExtra("USER_ID")); | |
Contact c = dbHandler.Get_Contact(USER_ID); | |
add_name.setText(c.getName()); | |
add_email.setText(c.getEmail()); | |
// dbHandler.close(); | |
} | |
add_email.addTextChangedListener(new TextWatcher() { | |
@Override | |
public void onTextChanged(CharSequence s, int start, int before, | |
int count) { | |
// TODO Auto-generated method stub | |
} | |
@Override | |
public void beforeTextChanged(CharSequence s, int start, int count, | |
int after) { | |
// TODO Auto-generated method stub | |
} | |
@Override | |
public void afterTextChanged(Editable s) { | |
// TODO Auto-generated method stub | |
Is_Valid_Email(add_email); | |
} | |
}); | |
add_name.addTextChangedListener(new TextWatcher() { | |
@Override | |
public void onTextChanged(CharSequence s, int start, int before, | |
int count) { | |
// TODO Auto-generated method stub | |
} | |
@Override | |
public void beforeTextChanged(CharSequence s, int start, int count, | |
int after) { | |
// TODO Auto-generated method stub | |
} | |
@Override | |
public void afterTextChanged(Editable s) { | |
// TODO Auto-generated method stub | |
Is_Valid_Person_Name(add_name); | |
} | |
}); | |
// imageDetail = (ImageView) findViewById(R.id.imageView); | |
// Intent intnt = getIntent(); | |
// theImage = (Bitmap) intnt.getParcelableExtra("imagename"); | |
// imageId = intnt.getIntExtra("imageid", 20); | |
// Log.d("Image ID:****", String.valueOf(imageId)); | |
// imageDetail.setImageBitmap(theImage); | |
add_save_btn.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
// TODO Auto-generated method stub | |
// check the value state is null or not | |
if (valid_name != null && valid_email != null && valid_name.length() != 0 && valid_email.length() != 0) { | |
dbHandler.Add_Contact(new Contact(valid_name, valid_email)); | |
Toast_msg = "Data Inserted Successfully"; | |
Show_Toast(Toast_msg); | |
Reset_Text(); | |
} | |
} | |
}); | |
update_btn.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
// TODO Auto-generated method stub | |
valid_name = add_name.getText().toString(); | |
valid_email = add_email.getText().toString(); | |
// check the value state is null or not | |
if (valid_name != null && valid_email != null && valid_name.length() != 0 && valid_email.length() != 0) { | |
dbHandler.Update_Contact(new Contact(USER_ID, valid_name, valid_email)); | |
dbHandler.close(); | |
Toast_msg = "Data Updated Successfully"; | |
Show_Toast(Toast_msg); | |
Reset_Text(); | |
} else { | |
Toast_msg = "Sorry some fields are Missing.\nPlease fill up them."; | |
Show_Toast(Toast_msg); | |
} | |
} | |
}); | |
update_view_all.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
// TODO Auto-generated method stub | |
// After Making necesssary updates we Return to MainActivity | |
Intent view_user = new Intent(Add_Update_User.this, MainActivity.class); | |
view_user.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); | |
startActivity(view_user); | |
finish(); | |
} | |
}); | |
add_view_all.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
// TODO Auto-generated method stub | |
Intent view_user = new Intent(Add_Update_User.this, MainActivity.class); | |
view_user.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); | |
startActivity(view_user); | |
finish(); | |
} | |
}); | |
} | |
public void Set_Add_Update_Screen() { | |
add_name = (EditText) findViewById(R.id.add_name); | |
add_email = (EditText) findViewById(R.id.add_email); | |
add_save_btn = (Button) findViewById(R.id.add_save_btn); | |
update_btn = (Button) findViewById(R.id.update_btn); | |
add_view_all = (Button) findViewById(R.id.add_view_all); | |
update_view_all = (Button) findViewById(R.id.update_view_all); | |
add_view = (LinearLayout) findViewById(R.id.add_view); | |
update_view = (LinearLayout) findViewById(R.id.update_view); | |
add_view.setVisibility(View.GONE); | |
update_view.setVisibility(View.GONE); | |
} | |
public void Is_Valid_Email(EditText edt) { | |
if (edt.getText().toString() == null) { | |
edt.setError("Invalid Email Address"); | |
valid_email = null; | |
} else if (isEmailValid(edt.getText().toString()) == false) { | |
edt.setError("Invalid Email Address"); | |
valid_email = null; | |
} else { | |
valid_email = edt.getText().toString(); | |
} | |
} | |
boolean isEmailValid(CharSequence email) { | |
return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches(); | |
} // end of email matcher | |
public void Is_Valid_Person_Name(EditText edt) throws NumberFormatException { | |
if (edt.getText().toString().length() <= 0) { | |
edt.setError("Accept Alphabets Only."); | |
valid_name = null; | |
} else if (!edt.getText().toString().matches("[a-zA-Z ]+")) { | |
edt.setError("Only Alphabets Allowed!"); | |
valid_name = null; | |
} else { | |
valid_name = edt.getText().toString(); | |
} | |
} | |
public void Show_Toast(String msg) { | |
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show(); | |
} | |
public void Reset_Text() { | |
add_name.getText().clear(); | |
add_email.getText().clear(); | |
} | |
} |
Step 4 : MainActivity:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.blogspot.dbh4ck.sqlite_demo_db; | |
import android.app.Activity; | |
import android.app.AlertDialog; | |
import android.content.Context; | |
import android.content.DialogInterface; | |
import android.content.Intent; | |
import android.os.Bundle; | |
import android.os.Handler; | |
import android.util.Log; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.ArrayAdapter; | |
import android.widget.Button; | |
import android.widget.ListView; | |
import android.widget.TextView; | |
import android.widget.Toast; | |
import java.util.ArrayList; | |
public class MainActivity extends Activity { | |
private Boolean exit = false; | |
Button add_btn; | |
ListView Contact_listview; | |
ArrayList<Contact> contact_data = new ArrayList<Contact>(); | |
Contact_Adapter cAdapter; | |
DatabaseHandler db; | |
String Toast_msg; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
try { | |
Contact_listview = (ListView) findViewById(R.id.list); | |
Contact_listview.setItemsCanFocus(false); | |
add_btn = (Button) findViewById(R.id.add_btn); | |
Set_Referash_Data(); | |
} catch (Exception e) { | |
// TODO: handle exception | |
Log.e("some error", "" + e); | |
} | |
add_btn.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
// TODO Auto-generated method stub | |
Intent add_user = new Intent(MainActivity.this, Add_Update_User.class); | |
add_user.putExtra("called", "add"); | |
add_user.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); | |
startActivity(add_user); | |
finish(); | |
} | |
}); | |
} | |
public void Set_Referash_Data() { | |
contact_data.clear(); | |
db = new DatabaseHandler(this); | |
ArrayList<Contact> contact_array_from_db = db.Get_Contacts(); | |
for (int i = 0; i < contact_array_from_db.size(); i++) { | |
int tidno = contact_array_from_db.get(i).getID(); | |
String name = contact_array_from_db.get(i).getName(); | |
String email = contact_array_from_db.get(i).getEmail(); | |
// byte[] image = contact_array_from_db.get(i).getImage(); | |
Contact cnt = new Contact(); | |
cnt.setID(tidno); | |
cnt.setName(name); | |
cnt.setEmail(email); | |
// cnt.setImage(image); | |
contact_data.add(cnt); | |
} | |
db.close(); | |
cAdapter = new Contact_Adapter(MainActivity.this, R.layout.listview_row, contact_data); | |
Contact_listview.setAdapter(cAdapter); | |
cAdapter.notifyDataSetChanged(); | |
} | |
public void Show_Toast(String msg) { | |
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show(); | |
} | |
@Override | |
public void onResume() { | |
// TODO Auto-generated method stub | |
super.onResume(); | |
Set_Referash_Data(); | |
} | |
@Override | |
public void onBackPressed() | |
{ | |
// super.onBackPressed(); | |
if(exit){ | |
finish(); | |
} | |
else{ | |
Toast.makeText(this, "Press Back Again To Exit" , Toast.LENGTH_SHORT).show(); | |
exit = true; | |
new Handler().postDelayed(new Runnable() { | |
@Override | |
public void run() { | |
Intent dbdito = new Intent(Intent.ACTION_MAIN); | |
dbdito.addCategory(Intent.CATEGORY_HOME); | |
dbdito.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | |
startActivity(dbdito); | |
} | |
}, 1000); | |
} | |
} | |
public class Contact_Adapter extends ArrayAdapter<Contact> { | |
Context context; | |
int layoutResourceId; | |
Contact user; | |
ArrayList<Contact> data = new ArrayList<Contact>(); | |
public Contact_Adapter(Context context, int layoutResourceId, ArrayList<Contact> data) { | |
super(context, layoutResourceId, data); | |
this.layoutResourceId = layoutResourceId; | |
this.context = context; | |
this.data = data; | |
notifyDataSetChanged(); | |
} | |
@Override | |
public View getView(int position, View convertView, ViewGroup parent) { | |
View row = convertView; | |
UserHolder holder = null; | |
if (row == null) { | |
LayoutInflater inflater = ((Activity)context).getLayoutInflater(); | |
row = inflater.inflate(layoutResourceId, parent, false); | |
holder = new UserHolder(); | |
holder.name = (TextView) row.findViewById(R.id.user_name_txt); | |
holder.email = (TextView) row.findViewById(R.id.user_email_txt); | |
holder.edit = (Button) row.findViewById(R.id.btn_update); | |
holder.delete = (Button) row.findViewById(R.id.btn_delete); | |
row.setTag(holder); | |
} else { | |
holder = (UserHolder) row.getTag(); | |
} | |
user = data.get(position); | |
holder.edit.setTag(user.getID()); | |
holder.delete.setTag(user.getID()); | |
holder.name.setText(user.getName()); | |
holder.email.setText(user.getEmail()); | |
holder.edit.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
// TODO Auto-generated method stub | |
Log.i("Edit Button Clicked", "**********"); | |
Intent update_user = new Intent(context, Add_Update_User.class); | |
update_user.putExtra("called", "update"); | |
update_user.putExtra("USER_ID", v.getTag().toString()); | |
context.startActivity(update_user); | |
} | |
}); | |
holder.delete.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(final View v) { | |
// TODO Auto-generated method stub | |
// show a message while loader is loading | |
AlertDialog.Builder adb = new AlertDialog.Builder(context); | |
adb.setTitle("Delete?"); | |
adb.setMessage("Are you sure you want to delete"); | |
final int user_id = Integer.parseInt(v.getTag().toString()); | |
adb.setNegativeButton("Cancel", null); | |
adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() { | |
@Override | |
public void onClick(DialogInterface dialog, int which) { | |
// MyDataObject.remove(positionToRemove); | |
DatabaseHandler dBHandler = new DatabaseHandler(context.getApplicationContext()); | |
dBHandler.Delete_Contact(user_id); | |
Toast.makeText(getApplicationContext(), "Deleted!", Toast.LENGTH_LONG).show(); | |
// MainActivity | |
MainActivity.this.onResume(); | |
} | |
}); | |
adb.show(); | |
} | |
}); | |
return row; | |
} | |
class UserHolder { | |
TextView name; | |
TextView email; | |
Button edit; | |
Button delete; | |
} | |
} | |
} |