Showing posts with label crud operation. Show all posts

CRUD Operation using Active Android

CRUD Operation using Active Android
Hello friends, today we will see a simple CRUD Example in Android using Active Android Library.This is a perfect alternate for SQLite in Android.

About Active Android

ActiveAndroid is an active record style ORM (object relational mapper). What does that mean exactly? Well, ActiveAndroid allows you to save and retrieve SQLite database records without ever writing a single SQL statement. ActiveAndroid takes care of all the setup for Accessing the database in android.

Project Setup

In the project you just created go to the app level build.gradle file and add these lines.
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'

    //Add this line
    compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'
}

repositories {
    jcenter()
    //Add these two lines
    mavenCentral()
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}

AndroidManifest.xml
Don't forget to add the following lines in your manifest fileAdd the following lines to initialize the ActiveAndroid.
<meta-data
    android:name="AA_DB_NAME"
    android:value="test.db" />
<meta-data
    android:name="AA_DB_VERSION"
    android:value="5" />
<meta-data
    android:name="AA_MODELS"
    android:value="com.androidmads.actvieandroidexample.Details" />
Create a class named MyApplication to initialize ActiveAndroid library. Add this Class in manifest file within application tag.
package com.androidmads.actvieandroidexample.app;

import android.app.Application;
import com.activeandroid.ActiveAndroid;

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        //Initializing Active Android
        ActiveAndroid.initialize(this);
    }
}
Create a Model class for Each table extended with activeandroid
package com.androidmads.actvieandroidexample;

import com.activeandroid.Model;
import com.activeandroid.annotation.Column;
import com.activeandroid.annotation.Table;

/**
 * Created by Mushtaq on 27-05-2016.
 */
@Table(name = "Details")
public class Details extends Model {

    @Column(name = "Name")
    public String name;

    @Column(name = "Age")
    public String age;

}
Create a layout file and paste the following lines
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="5dp"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="5dp"
        android:text="@string/app_name"
        android:textSize="16sp"
        android:background="@drawable/tv_bg"/>

    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:hint="@string/hint_enter_name"
        android:inputType="textPersonName" />

    <EditText
        android:id="@+id/age"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:hint="@string/hint_enter_age"
        android:inputType="number" />

    <EditText
        android:id="@+id/id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:hint="@string/hint_enter_id"
        android:inputType="number" />

    <Button
        android:id="@+id/insert"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="@string/insert" />

    <Button
        android:id="@+id/readAll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="@string/read_all" />

    <Button
        android:id="@+id/read"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="@string/read_one" />

    <Button
        android:id="@+id/deleteAll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="@string/delete_all" />

    <Button
        android:id="@+id/delete"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="@string/delete" />

    <Button
        android:id="@+id/update"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="@string/update" />
</LinearLayout>
To insert data into the Database use Model.save()
// Save Data
public void insertData(Details details){
    id = details.save();
    Log.v("id_value", String.valueOf(id));
    recreate();
}
To read all data from the Database use query as in the following
// Read All Data
Select().from(Details.class).orderBy("id ASC").execute();
To read data from the Database use query as in the following
// Read Data
Select().from(Details.class).where("id = ?", id).executeSingle();
To delete or delete All data from the Database use new Delete() query as in the following
// delete all 
new Delete().from(Details.class).execute();
// delete particular data 
Details.delete(Details.class , id);// where id is long type data
To update data from the Database use save() as in insert query as in the following. But, you have to get Primary id
// Update Data
Details details = Select().from(Details.class).where("id = ?", id).executeSingle();
details.name = holder.edt_name.getText().toString().trim();
details.age = holder.edt_age.getText().toString().trim();
details.save();

Download Full Source Code

You can download the full source from the following Github link. If you Like this tutorial, Please star it in Github.
    
Download From Github

Post your doubts and comments in the comments section.