SQLite is an open-source social database i.e. used to perform database operations on android gadgets, for example, putting away, controlling or recovering relentless information from the database.
It is implanted in android bydefault. In this way, there is no compelling reason to play out any database setup or organization assignment.
Here, we are going to see the case of sqlite to store and get the information. Information is shown in the logcat. For showing information on the spinner or listview, move to the following page. SQLiteOpenHelper class gives the usefulness to utilize the SQLite database.
A Simple Android SQLite Example
So lets create a project.
Step 1 – Create new Android project.
Provide Activity name as SQLiteApp as shown below
Step 2 – Add components in the main activity as shown in the picture below.
\AndroidStudioProjects\SqliteApp\app\src\main\res\layout\activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Name" android:id="@+id/textView" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Surname" android:id="@+id/textView2" android:layout_below="@+id/editText_name" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Marks" android:id="@+id/textView3" android:layout_below="@+id/editText_surname" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText_name" android:layout_alignTop="@+id/textView" android:layout_toRightOf="@+id/textView" android:layout_toEndOf="@+id/textView" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText_surname" android:layout_alignTop="@+id/textView2" android:layout_toRightOf="@+id/textView2" android:layout_toEndOf="@+id/textView2" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText_Marks" android:layout_below="@+id/editText_surname" android:layout_toRightOf="@+id/textView3" android:layout_toEndOf="@+id/textView3" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Add Data" android:id="@+id/button_add" android:layout_below="@+id/editText_Marks" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="76dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="View All" android:id="@+id/button_viewAll" android:layout_above="@+id/button_update" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Update" android:id="@+id/button_update" android:layout_below="@+id/button_add" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Delete" android:id="@+id/button_delete" android:layout_centerVertical="true" android:layout_below="@+id/button_viewAll" android:layout_alignLeft="@+id/button_viewAll" android:layout_alignStart="@+id/button_viewAll" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="id" android:id="@+id/textView_id" android:layout_below="@+id/editText_Marks" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText_id" android:layout_alignTop="@+id/textView_id" android:layout_toRightOf="@+id/textView3" android:layout_toEndOf="@+id/textView3" /> </RelativeLayout>
Step 3 – Now create a new Java class called DatabaseHelper.java.
Add the following code in this class to DatabaseHelper.java
package com.example.programmingknowledge.sqliteapp; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * Created by ProgrammingKnowledge on 4/3/2015. */ public class DatabaseHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "Student.db"; public static final String TABLE_NAME = "student_table"; public static final String COL_1 = "ID"; public static final String COL_2 = "NAME"; public static final String COL_3 = "SURNAME"; public static final String COL_4 = "MARKS"; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,SURNAME TEXT,MARKS INTEGER)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME); onCreate(db); } public boolean insertData(String name,String surname,String marks) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(COL_2,name); contentValues.put(COL_3,surname); contentValues.put(COL_4,marks); long result = db.insert(TABLE_NAME,null ,contentValues); if(result == -1) return false; else return true; } public Cursor getAllData() { SQLiteDatabase db = this.getWritableDatabase(); Cursor res = db.rawQuery("select * from "+TABLE_NAME,null); return res; } public boolean updateData(String id,String name,String surname,String marks) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(COL_1,id); contentValues.put(COL_2,name); contentValues.put(COL_3,surname); contentValues.put(COL_4,marks); db.update(TABLE_NAME, contentValues, "ID = ?",new String[] { id }); return true; } public Integer deleteData (String id) { SQLiteDatabase db = this.getWritableDatabase(); return db.delete(TABLE_NAME, "ID = ?",new String[] {id}); } }
MainActivity.java
package com.example.programmingknowledge.sqliteapp; import android.app.AlertDialog; import android.database.Cursor; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends ActionBarActivity { DatabaseHelper myDb; EditText editName,editSurname,editMarks ,editTextId; Button btnAddData; Button btnviewAll; Button btnDelete; Button btnviewUpdate; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myDb = new DatabaseHelper(this); editName = (EditText)findViewById(R.id.editText_name); editSurname = (EditText)findViewById(R.id.editText_surname); editMarks = (EditText)findViewById(R.id.editText_Marks); editTextId = (EditText)findViewById(R.id.editText_id); btnAddData = (Button)findViewById(R.id.button_add); btnviewAll = (Button)findViewById(R.id.button_viewAll); btnviewUpdate= (Button)findViewById(R.id.button_update); btnDelete= (Button)findViewById(R.id.button_delete); AddData(); viewAll(); UpdateData(); DeleteData(); } public void DeleteData() { btnDelete.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Integer deletedRows = myDb.deleteData(editTextId.getText().toString()); if(deletedRows > 0) Toast.makeText(MainActivity.this,"Data Deleted",Toast.LENGTH_LONG).show(); else Toast.makeText(MainActivity.this,"Data not Deleted",Toast.LENGTH_LONG).show(); } } ); } public void UpdateData() { btnviewUpdate.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { boolean isUpdate = myDb.updateData(editTextId.getText().toString(), editName.getText().toString(), editSurname.getText().toString(),editMarks.getText().toString()); if(isUpdate == true) Toast.makeText(MainActivity.this,"Data Update",Toast.LENGTH_LONG).show(); else Toast.makeText(MainActivity.this,"Data not Updated",Toast.LENGTH_LONG).show(); } } ); } public void AddData() { btnAddData.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { boolean isInserted = myDb.insertData(editName.getText().toString(), editSurname.getText().toString(), editMarks.getText().toString() ); if(isInserted == true) Toast.makeText(MainActivity.this,"Data Inserted",Toast.LENGTH_LONG).show(); else Toast.makeText(MainActivity.this,"Data not Inserted",Toast.LENGTH_LONG).show(); } } ); } public void viewAll() { btnviewAll.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Cursor res = myDb.getAllData(); if(res.getCount() == 0) { // show message showMessage("Error","Nothing found"); return; } StringBuffer buffer = new StringBuffer(); while (res.moveToNext()) { buffer.append("Id :"+ res.getString(0)+"\n"); buffer.append("Name :"+ res.getString(1)+"\n"); buffer.append("Surname :"+ res.getString(2)+"\n"); buffer.append("Marks :"+ res.getString(3)+"\n\n"); } // Show all data showMessage("Data",buffer.toString()); } } ); } public void showMessage(String title,String Message){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setCancelable(true); builder.setTitle(title); builder.setMessage(Message); builder.show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
OUTPUT
Android Books To Learn Mobile Apps Programming
- Android Programming: The Big Nerd Ranch Guide
- Android Design Patterns: Interaction Design Solutions for Developers
- Android Application Development Cookbook – Second Edition
- Android User Interface Design: Turning Ideas and Sketches into Beautifully Designed Apps (Usability)
- Android Recipes: A Problem-Solution Approach for Android 5.0
- Hello, Android: Introducing Google’s Mobile Development Platform (Pragmatic Programmers)
- Beginning Android Games
Video Instructions
it is showing 2 errors…
1.cannot find symbol variable menu
2.cannot find symbol variable action_settings
Same error .
I have commented those 2 methods including menu variable and action_Setting and it gose well 🙂
very helpful videos and code.. thank you buddy 🙂
thank you for the video + the code.
Nice tutorial, but where code for menu_main.xml ?
i need the answer for this question also
me too
same question
Just comment out the last two blocks ( onCreateOptionsMenu(Menu menu) and onOptionsItemSelected(MenuItem item) ) and the program will work. It doesn’t seem that “menu” has been realized at all, so these two are unnecessary.
Create a menu folder in res
Then create menu_main.xml file in it and paste this code in it.
the Options Menu is not used but it can be helpful for different purposes
THIS APP IS CLOSING AFTER CLICKING ON ADD BUTTON, WHY it only says
“Unfortunately app has stopped” please help me
Mee Too
Well done!
Just delete code for code for menu_main.xml
thanx for code
how can i display that data into the table
gives me this error when implemented into my code.
(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
Please help?
Thank You very much for this example. Exactly what I needed to jump-start with SQLite.
HI THERE
I HAVE USED YOUR CODE FOR UNDERSTANDING PURPOSE BUT AFTER ADDING THE CODE IN MAIN ACTIVITY I GET THIS @DEMIN ERROR AND SECONDLY AFTER CLICK ON ADD THE APPLICATION STOPS,,
PLZ GUIDE
THANKS
IFTIKHAR
One thing that was left out in the source code is you have to manually create a file called: dimens.xml under resvalues the contents should be something like:
8dp
8dp
What I did originally was just took out those constants and set them to 10dp, and it then got past that error. I saw this creation of the xml file on a Stack Overflow devoted to the various problems with this example, if you only cut and paste code. You should watch the videos – it will save more time actually.
please how can i connect to mysql database using android
my email ehisboy100@gmail.com
SQLiteDatabase db = this.getWritableDatabase();
this line in getAllData crashes whole application. could anyonne tell my why?
delete it
i want to add search bar in this please help
here the id is primary key right? How to..
1)save the data based on dateTime “now” (I don’t want to use datePickerTime or any calendar)just refer on date time device
2)Retrieve data based on date selected by used calendar.
Help me!!! why is that
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu); (THE R.menu is error)
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) { (and the action)settings is getting error too)
return true;
}
return super.onOptionsItemSelected(item);
SEND HELP!!!
i know your great try this
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) { (and the action)settings is getting error too)
return true;
}
superb but how to delete all data
“Delete from table_name “and we don’t have to specify the where condition
https://uploads.disquscdn.com/images/618776cc0444a31beec2740499416eb22d2ad3b809794452f8a8c42c712379d0.jpg sir
table is not created in database, database is showing empty
Any chance of updating this app for the ActionBarActivity has been deprecated to AppCompatActivity
Is there a way to declare a condition for update data to return false if the database does not contain the data(for example a specific email it should look for) is not in the database?
nice job…can i create a SQL database to store fingerprint characters??
Please i need a tutorial about how to save image in database in then how to retrieve?
How can we put this created database to web server.
I need Full source code files
Pls help Me!
Thank You very much
some Questions:
1. i don’t have a “andorid” option in my “tools”
2. i thried to find the database file in “devce file expoler”but there is no generated Student.db.
3. every time tried to insert will cause crash