Saturday, March 24, 2012

Use of SQLite -- 1


This is a sample program which shows usage of SQLite in android application for saving data. This application has two buttons in the main menu one for saving information and another for showing all saved information. Last blog published in this forum is How to handle bluetooth settings from your application.
Underlying Algorithm:
Basic description of algorithm in step by step form:
1.) Create a Project DatabaseSample.
2.) Replace the following code with res/layout/main.xml :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="fill_parent"android:layout_height="fill_parent"xmlns:android="http://schemas.android.com/apk/res/android" >
    <TextView android:id="@+id/text" android:layout_height="wrap_content"android:layout_width="wrap_content" android:text="DataBase Sample App"android:textSize="24.5sp" android:layout_gravity="center"/>
    <Button android:layout_below="@id/text" android:text="Save Data"android:id="@+id/button1" android:layout_gravity="center"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_marginLeft="50dp" android:layout_marginTop="50dp">
    </Button>
    <Button android:layout_below="@id/button1" android:text="Check Data"android:id="@+id/button2" android:layout_gravity="center"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_marginLeft="50dp">
    </Button>
</RelativeLayout>
3.) Create a helper class DataManipulator.java that can create the database and encapsulate other SQL details. In this DataManipulator class we will include an important inner class OpenHelper that provides a SQLiteOpenHelper.
package com.app.DatabaseSample;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteStatement;
import java.util.ArrayList;
import java.util.List;
public class DataManipulator
{
    private static final  String DATABASE_NAME = "mydatabase.db";
    private static final int DATABASE_VERSION = 1;
    static final String TABLE_NAME = "newtable";
    private static Context context;
    static SQLiteDatabase db;
    private SQLiteStatement insertStmt;
       
    private static final String INSERT = "insert into " + TABLE_NAME + " (name,number,skypeId,address) values (?,?,?,?)";
    public DataManipulator(Context context) {
        DataManipulator.context = context;
        OpenHelper openHelper = new OpenHelper(DataManipulator.context);
        DataManipulator.db = openHelper.getWritableDatabase();
        this.insertStmt = DataManipulator.db.compileStatement(INSERT);
    }
    public long insert(String name,String number,String skypeId,String address) {
        this.insertStmt.bindString(1, name);
        this.insertStmt.bindString(2, number);
        this.insertStmt.bindString(3, skypeId);
        this.insertStmt.bindString(4, address);
        return this.insertStmt.executeInsert();
    }
    public void deleteAll() {
        db.delete(TABLE_NAME, nullnull);
    }
    public List<String[]> selectAll()
    {
        List<String[]> list = new ArrayList<String[]>();
        Cursor cursor = db.query(TABLE_NAME, new String[] {"id","name","number","skypeId","address" }nullnullnullnull"name asc");
        int x=0;
        if (cursor.moveToFirst()) {
           do {
                String[] b1=newString[]{cursor.getString(0),cursor.getString(1),cursor.getString(2),
cursor.getString(3),cursor.getString(4)};
                list.add(b1);
                x=x+1;
           } while (cursor.moveToNext());
        }
        if (cursor != null && !cursor.isClosed()) {
           cursor.close();
        }
        cursor.close();
        return list;
   }
   public void delete(int rowId) {
        db.delete(TABLE_NAME, nullnull);
   }
   private static class OpenHelper extends SQLiteOpenHelper {
        OpenHelper(Context context) {
             super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
        @Override
        public void onCreate(SQLiteDatabase db) {
             db.execSQL("CREATE TABLE " + TABLE_NAME + " (id INTEGER PRIMARY KEY, name TEXT, number TEXT, skypeId TEXT, address TEXT)");
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
             db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
             onCreate(db);
        }
   }
}
4.) Create a save.xml in res/layout/save.xml:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/LinearLayout01" android:orientation="vertical"       android:layout_width="wrap_content" android:layout_height="wrap_content"android:paddingLeft="20sp">
    <TextView android:id="@+id/button1_label" android:layout_height="fill_parent"android:layout_width="wrap_content" android:text="Fill Information"android:textSize="24.5sp" android:layout_gravity="center"android:layout_marginBottom="25dip" />
    <TextView android:layout_width="fill_parent"       android:layout_height="wrap_content" android:text="Name:"android:layout_gravity="center" android:textSize="14.5sp" />
    <EditText android:id="@+id/name" android:layout_width="fill_parent"android:layout_height="wrap_content" />
    <TextView android:layout_width="fill_parent"       android:layout_height="wrap_content" android:text="Telephone Number:"android:layout_gravity="center" android:textSize="14.5sp" />
    <EditText android:id="@+id/number" android:layout_width="fill_parent"android:layout_height="wrap_content" />
    <TextView android:layout_width="fill_parent"       android:layout_height="wrap_content" android:text="Skype ID:"android:layout_gravity="center" android:textSize="14.5sp" />
    <EditText android:id="@+id/skypeId" android:layout_width="fill_parent"android:layout_height="wrap_content" />
    <TextView android:layout_width="fill_parent"       android:layout_height="wrap_content" android:text="Address:"android:layout_gravity="center" android:textSize="14.5sp" />
    <EditText android:id="@+id/address" android:layout_width="fill_parent"android:layout_height="wrap_content" />
    <LinearLayout android:id="@+id/LinearLayout02"android:orientation="horizontal" android:layout_width="wrap_content"android:layout_height="wrap_content" android:paddingLeft="20sp">
    <Button android:text="Save" android:id="@+id/Button01add"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_marginTop="20sp" android:layout_marginLeft="20sp">
    </Button>
    <Button android:text="Back" android:id="@+id/Button01home"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_marginTop="20sp" android:layout_marginLeft="20sp">
    </Button>
    </LinearLayout>
</LinearLayout>

No comments: