如何在Android studio数据库中创建多个表

时间:2017-01-21 18:35:52

标签: android database sqlite

很抱歉打扰你们所有人,但有时帮助就是我要求的。我是Android开发的新手,目前我正在通过ChannelKnowledge通道在youtube上关注android数据库创建教程,但是,它只适用于一个表,而我需要在数据库中有3个表,并且无法获得我的方式。任何帮助,将不胜感激。提前谢谢!

这是我目前的代码。

公共类DatabaseHelper扩展了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);
}

}

我在链接上看到了类似的内容: Multi-table database SQLite android

但仍然不明白。

3 个答案:

答案 0 :(得分:6)

this是非常好的教程..读它

你可以像这样创建多个表

 =COUNTBLANK(INDIRECT("A"&LOOKUP(2,1/($A$2:A2<>""),ROW($A$2:A2))&":A"&ROW()))

答案 1 :(得分:0)

您只需调用更多db.execSQL(sqlQuery);方法。

例如:

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)");

如果您不了解SQL,我建议您在here之前学习它。

答案 2 :(得分:0)

在Kotlin中,我使数据库循环在一个常量数组中进行,因此我只需在数组中添加表名,就像这样

我的对象缺点

    package app.packagename

    object cons {
      val tableNames = arrayOf(
        0*/"tableZero",
        1*/"tableOne",
        2*/"tableTwo"
      )
    } 

我的SQLiteDatabase

package app.packagename

    import app.packagename.cons
    import android.content.Context
    import android.database.sqlite.SQLiteDatabase
    import android.database.sqlite.SQLiteOpenHelper

        class DBHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
            override fun onCreate(db: SQLiteDatabase) {
                for(i in cons.tableNames.indices){
                    val createProductsTable = ("CREATE TABLE " + cons.tableNames[i] + "("
                            + Business.idKey + " INTEGER PRIMARY KEY AUTOINCREMENT ,"
                            + Business.KEY_a + " TEXT, "
                            + Business.KEY_b + " TEXT, "
                            + Business.KEY_c + " TEXT, "
                            + Business.KEY_d + " TEXT, "
                            + Business.KEY_e + " INTEGER )")
                    db.execSQL(createProductsTable)
                }
            }
            override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
                // Drop older table if existed, all data will be gone!!!
                for(i in cons.tableNames.indices){

                    db.execSQL("DROP TABLE IF EXISTS ${cons.tableNames[i]}")

                    // Create tables again
                    onCreate(db)
                }
            }
            companion object {
                //version number to upgrade database version
                //each time if you Add, Edit table, you need to change the
                //version number.
                private val DATABASE_VERSION = 1

                // Database Name
                private val DATABASE_NAME = "tables.db"
            }
        }