In this part of my Android tutorial we will cover using SQLite. We’ll create the database, verify its creation, add data, delete data, display data and delete the database. We’ll also explore Cursors and more.
I structured the app so that it is both very easy to understand and so you’ll be able to cut and paste out the features you need for your apps. I also have an SQLite tutorial that you’ll find very useful.
If you like videos like this, it helps to tell others with a click here [googleplusone]
Code From the Video
activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
<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"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Create Database" android:id="@+id/createDBButton" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:onClick="createDatabase"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Add Contact" android:id="@+id/addContactButton" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/createDBButton" android:layout_toEndOf="@+id/createDBButton" android:layout_marginLeft="10dp" android:onClick="addContact" android:clickable="false" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Delete Contact" android:id="@+id/deleteContactButton" android:layout_below="@+id/createDBButton" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:onClick="deleteContact" android:clickable="false"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Get Contacts" android:id="@+id/getContactsButton" android:layout_below="@+id/createDBButton" android:layout_toRightOf="@+id/deleteContactButton" android:layout_toEndOf="@+id/deleteContactButton" android:layout_marginLeft="10dp" android:onClick="getContacts" android:clickable="false"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/nameEditText" android:layout_below="@+id/deleteContactButton" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:hint="Name" android:layout_marginTop="5dp"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/emailEditText" android:layout_below="@+id/nameEditText" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:hint="Email" android:layout_marginTop="5dp" android:inputType="textEmailAddress"/> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number" android:ems="10" android:id="@+id/idEditText" android:layout_below="@+id/emailEditText" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:hint="ID to Delete" android:layout_marginTop="5dp"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Delete Database" android:id="@+id/deleteDBButton" android:onClick="deleteDatabase" android:layout_below="@+id/idEditText" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:clickable="false" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textMultiLine" android:ems="10" android:id="@+id/contactListEditText" android:lines="8" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> </RelativeLayout> |
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
package com.newthinktank.derekbanas.contacts; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import java.io.File; public class MainActivity extends ActionBarActivity { SQLiteDatabase contactsDB = null; Button createDBButton, addContactButton, deleteContactButton, getContactsButton, deleteDBButton; EditText nameEditText, emailEditText, contactListEditText, idEditText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); createDBButton = (Button) findViewById(R.id.createDBButton); addContactButton = (Button) findViewById(R.id.addContactButton); deleteContactButton = (Button) findViewById(R.id.deleteContactButton); getContactsButton = (Button) findViewById(R.id.getContactsButton); deleteDBButton = (Button) findViewById(R.id.deleteDBButton); nameEditText = (EditText) findViewById(R.id.nameEditText); emailEditText = (EditText) findViewById(R.id.emailEditText); contactListEditText = (EditText) findViewById(R.id.contactListEditText); idEditText = (EditText) findViewById(R.id.idEditText); } public void createDatabase(View view) { try{ // Opens a current database or creates it // Pass the database name, designate that only this app can use it // and a DatabaseErrorHandler in the case of database corruption contactsDB = this.openOrCreateDatabase("MyContacts", MODE_PRIVATE, null); // Execute an SQL statement that isn't select contactsDB.execSQL("CREATE TABLE IF NOT EXISTS contacts " + "(id integer primary key, name VARCHAR, email VARCHAR);"); // The database on the file system File database = getApplicationContext().getDatabasePath("MyContacts.db"); // Check if the database exists if (database.exists()) { Toast.makeText(this, "Database Created", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Database Missing", Toast.LENGTH_SHORT).show(); } } catch(Exception e){ Log.e("CONTACTS ERROR", "Error Creating Database"); } // Make buttons clickable since the database was created addContactButton.setClickable(true); deleteContactButton.setClickable(true); getContactsButton.setClickable(true); deleteDBButton.setClickable(true); } public void addContact(View view) { // Get the contact name and email entered String contactName = nameEditText.getText().toString(); String contactEmail = emailEditText.getText().toString(); // Execute SQL statement to insert new data contactsDB.execSQL("INSERT INTO contacts (name, email) VALUES ('" + contactName + "', '" + contactEmail + "');"); } public void getContacts(View view) { // A Cursor provides read and write access to database results Cursor cursor = contactsDB.rawQuery("SELECT * FROM contacts", null); // Get the index for the column name provided int idColumn = cursor.getColumnIndex("id"); int nameColumn = cursor.getColumnIndex("name"); int emailColumn = cursor.getColumnIndex("email"); // Move to the first row of results cursor.moveToFirst(); String contactList = ""; // Verify that we have results if(cursor != null && (cursor.getCount() > 0)){ do{ // Get the results and store them in a String String id = cursor.getString(idColumn); String name = cursor.getString(nameColumn); String email = cursor.getString(emailColumn); contactList = contactList + id + " : " + name + " : " + email + "\n"; // Keep getting results as long as they exist }while(cursor.moveToNext()); contactListEditText.setText(contactList); } else { Toast.makeText(this, "No Results to Show", Toast.LENGTH_SHORT).show(); contactListEditText.setText(""); } } public void deleteContact(View view) { // Get the id to delete String id = idEditText.getText().toString(); // Delete matching id in database contactsDB.execSQL("DELETE FROM contacts WHERE id = " + id + ";"); } public void deleteDatabase(View view) { // Delete database this.deleteDatabase("MyContacts"); } @Override protected void onDestroy() { contactsDB.close(); super.onDestroy(); } } |
Leave a Reply