• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
seegatesite header

Seegatesite.com

Seegatesite.com - Programming Tutorial , Sharing , How and Learn Together

  • TOOLS
    • Bootstrap Navbar Online Generator
    • Customize Sidebar Menu Bootstrap 3
    • Bootstrap Demo
  • ADVERTISE
  • CATEGORIES
    • Android
    • Blogging Tips
    • Database
    • CSS
    • Info Gadget
    • Javascript
    • Linux
    • PHP
    • Various
    • WordPress
  • Q&A
  • GUEST POST
  • PHP
  • JAVASCRIPT
  • JQUERY
  • ANGULAR
  • WORDPRESS
  • SEO
  • REACT
🏠 » Android » Android Tutorial – Step By Step Learning Android Sqlite Database for Beginner

Android Tutorial – Step By Step Learning Android Sqlite Database for Beginner

By Sigit Prasetya Nugroho ∙ January 20, 2016 ∙ Android ∙ 13 Comments

Share : TwitterFacebookTelegramWhatsapp

Seegatesite – Today i will share an article about  Android Tutorial – Step By Step Learning Android Sqlite Database for Beginner . To learn android sqlite database, it is good we know the various data storage media which are owned by the android. Most applications require a medium for storing information inside. There are a lot of data storage options of android.

Here are the locations that can be used to store data permanent and most commonly used :

  • Shared Preferences : Permanent data storage in the form of key pair.
  • Internal Storage : locations where we can store files in the internal storage of the device. By default, files will be stored in the internal storage that is part of the application. When uninstalling the application, then the internal storage will also be deleted.
  • Local cache : if we want to cache data and open the store, we need a method getCacheDir () on the object activity or context.
  • External Storage : such as SD Cards and other external media.
  • Database Sqlite : A reliable database which I will discuss in this article.

Table of Contents

    • 0.1 Introduction Sqlite Database
  • 1 Step By Step Learning Android Sqlite Database with Simple Example
    • 1.1 How do I display the query results table sqlite to listview?

Introduction Sqlite Database

Sqlite database is open source embedded database on android. To use sqlite in android application, available package by name android.database.sqlite. There are three main components that are used to handle sqlite in android

1.SQLiteOpenHelper

SQLiteOpenHelper used to determine the name and version of the database that will be used, in this class there is a onCreate() and onUpgrade() method. onCreate() invoked if the database doesn’t exist. Moreover this method is used to update the database schema the most recent.

SQLiteOpenHelper have getReadableDatabase() and getWritableDatabase() method  in order to access to the object SQLiteDatabase, either in read or write mode

2.SQLiteDatabase

SQLiteDatabase is the base class for sqlite database in android. This method is used to execute multiple SQL syntax such as query, update, insert and delete. SQLiteDatabase have many methods such as insert(), update(), delete() and also execSQL() used for the execution of the database directly.

In order the insert() and update() can work well, we need to define the object ContentValues key / value to the table. Key presented the identity column in the table. Value present the records in the table in the column.

A query can be made using the rawQuery() and query() method through SQLiteQueryBuilder class. Method rawQuery() accepts a SQL statement as input. While the method query() has a structured interface to specify the SQL query.  SQLiteQueryBuilder is a class that allows you to create SQL queries.

rawQuery()

Cursor cursor = getReadableDatabase();
rawQuery("select * from table where address = ?",new String[]{id});

Query()

return database.query(database_table,new String[]{key_1,key_3,key_2},null,null,null,null,null);

3.Cursor

Query function to return the cursor object, so that the cursor is the result of a query, one row (record) of the query results. With android cursor can perform buffer query results with efficient because it doesn’t need to load data into memory.

Several methods are commonly used

  • getCount() : To get the number of elements of the query results.
  • moveToFirst() : to move to the beginning of the line
  • moveToNext() : to move to the next line.
  • isAfterLast() : to check whether the last record of a query

Immediately, we learn through examples

Step By Step Learning Android Sqlite Database with Simple Example

1. Create a new android project with the name SqlDatabase. Read the introduction of android studio for beginners if you don’t understand how to create a new project on android studio.

2. Create a new java file named DatabaseHandler.java and copy the following script

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
package com.example.seegate.sqldatabase; // change with your package name
 
import java.util.ArrayList;
import java.util.List;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
 
/**
* Created by seegate on 1/17/2016.
*/
public class DatabaseHandler extends SQLiteOpenHelper {
 
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "ProfileDb";
    private static final String TABLE_PERSON = "t_person";
    private static final String KEY_ID = "id";
    private static final String KEY_NAME = "name";
    private static final String KEY_COUNTRY = "country";
 
    public DatabaseHandler(Context context){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_PERSON_TABLE = "CREATE TABLE " + TABLE_PERSON + "("
                + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
                + KEY_COUNTRY + " TEXT" + ")";
        db.execSQL(CREATE_PERSON_TABLE);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_PERSON);
        onCreate(db);
    }
 
    public void save(Person person){
        SQLiteDatabase db=this.getWritableDatabase();
        ContentValues values=new ContentValues();
        values.put(KEY_NAME, person.getName());
        values.put(KEY_COUNTRY, person.getCountry());
 
        db.insert(TABLE_PERSON, null, values);
        db.close();
    }
 
    public Person findOne(int id){
        SQLiteDatabase db=this.getReadableDatabase();
        Cursor cursor=db.query(TABLE_PERSON, new String[]{KEY_ID,KEY_NAME,KEY_COUNTRY},
                KEY_ID+"=?", new String[]{String.valueOf(id)}, null, null, null);
        if(cursor!=null){
            cursor.moveToFirst();
        }
        return new Person(Integer.parseInt(cursor.getString(0)),cursor.getString(1),cursor.getString(2));
    }
 
    public List<Person> findAll(){
        List<Person> listperson=new ArrayList<Person>();
        String query="SELECT * FROM "+TABLE_PERSON;
 
        SQLiteDatabase db=this.getReadableDatabase();
        Cursor cursor=db.rawQuery(query, null);
 
        if(cursor.moveToFirst()){
            do{
                Person person=new Person();
                person.setId(Integer.valueOf(cursor.getString(0)));
                person.setName(cursor.getString(1));
                person.setCountry(cursor.getString(2));
                listperson.add(person);
            }while(cursor.moveToNext());
        }
 
        return listperson;
    }
 
    public void update(Person person){
        SQLiteDatabase db=this.getWritableDatabase();
 
        ContentValues values=new ContentValues();
        values.put(KEY_NAME , person.getName());
        values.put(KEY_COUNTRY, person.getCountry());
 
        db.update(TABLE_PERSON, values, KEY_ID+"=?", new String[]{String.valueOf(person.getId())});
        db.close();
    }
 
    public void delete(Person person){
        SQLiteDatabase db=this.getWritableDatabase();
        db.delete(TABLE_PERSON, KEY_ID+"=?", new String[]{String.valueOf(person.getId())});
        db.close();
    }
}

Explanation :

Learning Sqlite Android How To Create Save Method For Beginner

Method save() is used to store the new data into the database. This method has a parameter in the form of an object from the Person class. ContentValues used to assign values to the table column. Furthermore, the process of storing data only call methods insert() owned by SQLiteOpenHelper.

The inserts() has the following parameters

public long insert (String table, String nullColumnHack, ContentValues values).

For details please visit developer.android.com

Learning Sqlite Android How To Create Update Method For Beginner

Method update() is used to update old data in the database. The update process has the following parameters

public int update (String table, ContentValues values, String whereClause, String[] whereArgs)

For details please visit developer.android.com

Learning Sqlite Android How To Create Delete Method For Beginner

Delete method used to remove data from the database. Sqlite delete process has the following parameters

public int delete (String table, String whereClause, String[] whereArgs)

For details please visit developer.android.com

Android Tutorial Learning Sqlite Android How To Show Table From Query Method Sqlite

The following method is tasked takes one row of data in the database with the parameters held in the form id. This method returns an object that has a class book that corresponds to the parameter id.

Android Tutorial Learning Sqlite Android How To Show Cursor From Arraylist Sqlite Android

Taking all the available data in the database need to iterate on Cursor and then turn them into objects of persons and put on a list.

3. Creating an entity Person.java. As usual when it will perform the operation associated with the data we modeled the data into a Java class along with its property that adapts to a column in the table that we have made above.

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
package com.example.seegate.sqldatabase; // change with your package name
 
/**
* Created by sigit on 18/01/16.
*/
public class Person {
    private int id;
    private String name;
    private String country;
 
    public Person(){}
 
    public Person(String name,String country){
        this.name=name;
        this.country=country;
    }
 
    public Person(int id,String name,String country){
        this.id=id;
        this.name=name;
        this.country=country;
    }
 
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
}

4. Class to manipulate the data in the database is finished we make. Then we will finish the entire code and create a class above the main class / MainActivity.java. In this example we will see if the results DatabaseHandler class that we make are correct or not?. We checked through the Debug Log on android studio. Please copy the following code on 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
package com.example.seegate.sqldatabase; // change with your package name
 
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
 
import java.util.List;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        DatabaseHandler databaseHandler=new DatabaseHandler(this);
 
        Log.d("insert", "inserting data");
        databaseHandler.save(new Person("Sigit", "Indonesia"));
        databaseHandler.save(new Person("Linus Torvalds","Finlandia"));
 
        Log.d("reading", "reading all data");
        List<Person> listPerson=databaseHandler.findAll();
        for(Person b:listPerson){
            Log.d("data", "ID :"+b.getId()+" | Name :"+b.getName()+" | Country :"+b.getCountry());
        }
 
        Log.d("reading","reading one data");
        Person b=databaseHandler.findOne(2);
        Log.d("data", "ID :"+b.getId()+" | Name :"+b.getName()+" | Country :"+b.getCountry());
 
        Log.d("update","updating data");
        b.setName("Sigit Prasetya Nugroho");
        databaseHandler.update(b);
        Log.d("reading","reading one data after update");
        Person bUpdate=databaseHandler.findOne(2);
        Log.d("data", "ID :"+bUpdate.getId()+" | Name :"+bUpdate.getName()+" | Country :"+bUpdate.getCountry());
 
        Log.d("delete", "deleting data");
        databaseHandler.delete(b);
        Log.d("reading", "reading all data after delete");
        List<Person> listPerson2=databaseHandler.findAll();
        for(Person b2:listPerson2){
            Log.d("data", "ID :"+b2.getId()+" | Name :"+b2.getName()+" | Country :"+b2.getCountry());
        }
    }
}

Explanation :

To see the results of the activity above, please refer to the debug log you

Android Tutorial Learning Sqlite Android Showing Log Debug On Android Studio

The results are as shown below

Android Tutorial Step By Step Learning Android Sqlite Database For Beginner

How do I display the query results table sqlite to listview?

Learning Sqlite Android How To Show Table Result To Listview Android

1. Create a new layout with the name list_item.xml and copy the following code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/TableLayout1" android:layout_width="match_parent" android:layout_height="match_parent" >
 
    <TableRow android:id="@+id/tableRow1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="4dp" >
 
        <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Name : " android:id="@+id/textView3" android:layout_column="3" />
 
        <TextView android:id="@+id/outname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="4dp" android:text="Name" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_column="4" />
 
    </TableRow>
 
    <TableRow android:layout_width="match_parent" android:layout_height="match_parent">
 
        <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Country : " android:id="@+id/textView2" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_column="3" />
 
        <TextView android:id="@+id/outaddress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="4dp" android:text="Address" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_column="4" />
    </TableRow>
 
    <TableRow android:layout_width="match_parent" android:layout_height="match_parent">
 
    </TableRow>
 
</TableLayout>

Table row above will be displayed as a list of items in the ListView

2. Add listview on your activity_main.xml

1
<ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="305dp" app:listitem="@layout/list_item" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" />

To add list_item.xml the ListView using the following code

app:listitem="@layout/list_item"

3. Add scripts on DatabaseHandler.java we have made as follows:

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
public ArrayList<ArrayList<Object>> ambilSemuaBaris() {
 
        ArrayList<ArrayList<Object>> dataArray = new ArrayList<ArrayList<Object>>();
        Cursor cur;
        try {
            SQLiteDatabase db=this.getReadableDatabase();
            cur = db.query(TABLE_PERSON, new String[] { KEY_NAME, KEY_COUNTRY },
                    null, null, null, null, null);
            cur.moveToFirst();
            if (!cur.isAfterLast()) {
                do {
                    ArrayList<Object> dataList = new ArrayList<Object>();
                    dataList.add(cur.getString(0));
                    dataList.add(cur.getString(1));
                    dataArray.add(dataList);
                } while (cur.moveToNext());
 
            }
 
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Log.e("DEBE ERROR", e.toString());
        }
        return dataArray;
    }

4. Create a new class with the name PersonAdapter.java to display the query results in a TextView in the list_item.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
package com.example.seegate.sqldatabase; // change with your package name
 
/**
* Created by sigit on 20/01/16.
*/
import java.util.ArrayList;
 
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
 
public class PersonAdapter extends BaseAdapter {
    private static ArrayList<Person> searchArrayList;
 
    private LayoutInflater mInflater;
 
    public PersonAdapter(Context context, ArrayList<Person> results) {
        searchArrayList = results;
        mInflater = LayoutInflater.from(context);
    }
 
    @Override
    public int getCount() {
        return searchArrayList.size();
    }
 
    @Override
    public Object getItem(int p) {
        return searchArrayList.get(p);
    }
 
    @Override
    public long getItemId(int p) {
        return p;
    }
 
    @Override
    public View getView(int p, View v, ViewGroup parent) {
        ViewHolder holder;
 
        if (v == null) {
            v = mInflater
                    .inflate(R.layout.list_item, null);
            holder = new ViewHolder();
 
            holder.name = (TextView) v.findViewById(R.id.outname);
            holder.address = (TextView) v.findViewById(R.id.outaddress);
 
            v.setTag(holder);
        } else {
            holder = (ViewHolder) v.getTag();
        }
 
        holder.name.setText(searchArrayList.get(p).getName());
        holder.address.setText(searchArrayList.get(p).getCountry());
        return v;
    }
 
    static class ViewHolder {
        TextView name, address;
 
    }
 
}

5. To display the data in a ListView, we will change the code on MainActivity.xml that we created earlier. Please copy the following script

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
package com.example.seegate.sqldatabase;
 
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.ListView;
 
import java.util.ArrayList;
 
public class MainActivity extends AppCompatActivity {
 
    Person komponenperson;
    ArrayList<Person> isiperson = new ArrayList<Person>();
 
    private ListView listcontent = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DatabaseHandler databaseHandler=new DatabaseHandler(this);
 
        databaseHandler.save(new Person("Sigit", "Indonesia"));
        databaseHandler.save(new Person("Linus Torvalds", "Finlandia"));
 
        listcontent=(ListView) findViewById(R.id.listView1);
        tampilPerson();
 
    }
    private void tampilPerson() {
        // TODO Auto-generated method stub
        isiperson.clear();
        DatabaseHandler databaseHandler=new DatabaseHandler(this);
        ArrayList<ArrayList<Object>> data =  databaseHandler.ambilSemuaBaris();
 
        for (int p = 0; p < data.size(); p++) {
            komponenperson = new Person();
            ArrayList<Object> baris = data.get(p);
            Log.e("baris", baris.get(0).toString());
            Log.e("baris", baris.get(1).toString());
            komponenperson.setName(baris.get(0).toString());
            komponenperson.setCountry(baris.get(1).toString());
            isiperson.add(komponenperson);
        }
        PersonAdapter datakamus = new PersonAdapter(MainActivity.this,isiperson);
        listcontent.setAdapter(datakamus);
    }
}

Thus article about Android Tutorial – Step By Step Learning Android Sqlite Database for Beginner, hope useful

Another Android Related Post :

  • Easily Download and Install Pokemon Go on Android in Unregistered Country
  • Tutorial How to Create Download File From Url On Ionic Framework
  • How to Create Android Image Gallery with Ionic Framework and Web Services
  • Ionic Framework – Introduction and Installation Tutorial on Windows and Ubuntu
  • Android Tutorial – Display Image To Android Gridview From Url Using Picasso
  • Android Tutorial – Using AsyncTask for Android With Simple Example for Beginners

Avatar for Sigit Prasetya Nugroho

About Sigit Prasetya Nugroho

This site is a personal Blog of Sigit Prasetya Nugroho, a Desktop developer and freelance web developer working in PHP, MySQL, WordPress.

Reader Interactions

Comments

  1. Avatar for AndroidNamesAndroidNames says

    June 23, 2016 at 2:28 pm

    This tutorial is good for ones who only want to use SQLite directly. I think it is better to use an ORM.

    Reply
  2. Avatar for WibisonoWibisono says

    December 26, 2016 at 9:52 pm

    Thank you so much for this Tutorial, It really helped a lot!!

    Reply
    • Avatar for HarfiansyahHarfiansyah says

      November 16, 2017 at 1:38 am

      dat “ambilsemuabaris” tho wkwkwk. Maybe u should change it to GetAllRow, so it will match the rest of the code, and for better understanding to wider range of people (since u write this down in english) :D, btw, nice article tho! it’s really easy to understand.

      Reply
      • Avatar for HarfiansyahHarfiansyah says

        November 16, 2017 at 1:40 am

        Eh, i didn’t mean to reply this comment. Sorry 😀

        Reply
      • Avatar for Sigit Prasetya NugrohoSigit Prasetya Nugroho says

        November 16, 2017 at 1:53 am

        this is mean “I love Indonesia”…wkwkwkw LOL 😛

        Reply
        • Avatar for HarfiansyahHarfiansyah says

          November 16, 2017 at 12:37 pm

          hey i got an error in “app:listitem”, the xml file said that there should be “android” instead of “app”, when i switch to android, it said there is no “android:listitem”. any idea?

          Reply
          • Avatar for HarfiansyahHarfiansyah says

            November 16, 2017 at 1:02 pm

            ah nevermind, i deleted that line and everything woked like a charm! 🙂

  3. Avatar for UbaldoUbaldo says

    February 17, 2017 at 10:18 pm

    Thanks Id Like your post, but, I have some problems creating my database, can you help me??
    I need to create a database that saves information from a checkbox like a yes o no, o true and false, please help me!!!

    Reply
    • Avatar for Sigit Prasetya NugrohoSigit Prasetya Nugroho says

      February 20, 2017 at 2:05 am

      I will check it ASAP

      Reply
  4. Avatar for ChandruChandru says

    March 9, 2017 at 5:01 am

    I can’t download source code

    Reply
    • Avatar for Sigit Prasetya NugrohoSigit Prasetya Nugroho says

      March 9, 2017 at 8:04 am

      sorry download files already deleted 🙁

      Reply
  5. Avatar for SnehalSnehal says

    September 7, 2017 at 8:39 am

    this is so helpful..Please provide source code.

    Reply
    • Avatar for Sigit Prasetya NugrohoSigit Prasetya Nugroho says

      September 7, 2017 at 1:53 pm

      Sorry, the source code project has been deleted from my hard drive. 🙁

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Primary Sidebar

Welcome to my Home,

Avatar for Sigit Prasetya NugrohoThis site is a personal Blog of Sigit Prasetya Nugroho, a Desktop developer and freelance web developer working in PHP, MySQL, WordPress.



Popular Articles

Checked checkbox AdminLTE Bootstrap in Jquery

November 4, 2014 By Sigit Prasetya Nugroho 7 Comments

Simple create date format validation with jqueryUI

December 21, 2014 By Sigit Prasetya Nugroho Leave a Comment

Create Simple Progress Bar for Fake Online Generator with Jquery

January 10, 2015 By Sigit Prasetya Nugroho Leave a Comment

22+ Coolest Free Jquery Plugin For Premium Theme

October 3, 2015 By Sigit Prasetya Nugroho Leave a Comment

Easy Build Your Anti Copy Paste Plugin

October 6, 2015 By Sigit Prasetya Nugroho Leave a Comment

Popular Tags

adminlte (15) adsense (13) adsense tips (4) affiliate amazon (13) amazon (12) Android (8) angular (16) angular 4 (12) angular 5 (4) asin grabber (3) Bootstrap (27) codeigniter (5) create wordpress theme (5) crud (8) css (6) free wordpress theme (7) google adsense (4) imacros (4) increase traffic (6) jquery (34) laravel (10) laravel 5 (5) learn android (5) modal dialog (5) mysql (6) nodeJs (4) optimize seo (4) pdo (6) php (30) plugin (53) pos (7) Publisher Tips (5) react (3) Reactjs (7) SEO (37) theme (17) tutorial angular (5) tutorial angular 4 (6) tutorial javascript (10) tutorial javascript beginners (4) twitter (3) widget (3) wordpress (18) wordpress plugin (13) XMLRPC (5)




  • About
  • Contact Us
  • Disclaimer
  • Privacy Policy
  • Terms and Conditions

©2021 Seegatesite.com