Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create multiple tables in Android studio database

Currently I'm following tutorial for android database creation on youtube at channel ProgrammingKnowledge, however, it works only for one table, while I need to have 3 tables in the database, and can't get my way around it.

This is the code I currently have.

public class DatabaseHelper extends SQLiteOpenHelper {

    //database name declaration
    public static final String DATABASE_NAME = "museum.db";
    public static final String TABLE_NAME = "exponent_table";
    public static final String COL_1 = "ID";
    public static final String COL_2 = "TITLE";
    public static final String COL_3 = "STORY";
    public static final String COL_4 = "AUTHOR";
    public static final String COL_5 = "DATE";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
        SQLiteDatabase db= this.getWritableDatabase(); //will create database and table, just for checking, will be replaced
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //creating tables ???
          db.execSQL("create table "+TABLE_NAME+" (ID INTEGER PRIMARY KEY AUTOINCREMENT, TITLE TEXT, STORY TEXT, AUTHOR TEXT, DATE STRING)");
          
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
        onCreate(db);
    }
}

I have seen something similar on the link: Multi-table database SQLite android

But still do not understand.

like image 957
Albatrone Avatar asked Jan 21 '17 18:01

Albatrone


2 Answers

this is very good tutorial..read it

you can create multiple tables like this

@Override
public void onCreate(SQLiteDatabase db) {   
  db.execSQL("create table "+TABLE_NAME+" (ID INTEGER PRIMARY KEY AUTOINCREMENT, TITLE TEXT, STORY TEXT, AUTHOR TEXT, DATE STRING)");
  db.execSQL("create table "+TABLE_NAME1+" (ID INTEGER PRIMARY KEY AUTOINCREMENT, Table1Field TEXT)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
    db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
    db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME1);
    onCreate(db);
}
like image 136
Omer Avatar answered Oct 06 '22 08:10

Omer


You just have to invoke more db.execSQL(sqlQuery); methods.

For example:

db.execSQL("create table "+TABLE_NAME+" (ID INTEGER PRIMARY KEY AUTOINCREMENT, TITLE TEXT, STORY TEXT, AUTHOR TEXT, DATE STRING)");
db.execSQL("create table "+TABLE_NAME2+" (ID INTEGER PRIMARY KEY AUTOINCREMENT, TITLE TEXT, STORY TEXT, AUTHOR TEXT, DATE STRING)");
db.execSQL("create table "+TABLE_NAME3+" (ID INTEGER PRIMARY KEY AUTOINCREMENT, TITLE TEXT, STORY TEXT, AUTHOR TEXT, DATE STRING)");

If you don't know SQL, I recommend learning it before here.

like image 40
Diogo Correia Avatar answered Oct 06 '22 08:10

Diogo Correia