我想在我的数据库中添加两个表,我该怎么做?

时间:2017-02-25 14:07:16

标签: android android-sqlite

我是初学者,我这样做但我不知道如何添加另一张桌子 我该怎么做?我想在我的ussd数据库中添加Admin表。

这是我的代码。

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "ussd.db";
    public static final String TABLE_NAME = "offre_table";
    public static final String COL_1 = "ID";
    public static final String COL_2 = "CODE";
    public static final String COL_3 = "NAME";
    public static final String COL_4 = "USSD";
    public static final String COL_5 = "SMS";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
        SQLiteDatabase db = this.getWritableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(" create table " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT,CODE INTEGER,NAME TEXT,USSD TEXT,SMS TEXT)");

    }

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

    public boolean insertData(String code, String name, String ussd, String sms){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_2,code);
        contentValues.put(COL_3,name);
        contentValues.put(COL_4,ussd);
        contentValues.put(COL_5,sms);
        long result = db.insert(TABLE_NAME,null,contentValues);
        if (result == -1) {
            return false;
        } else {
            return true;
        }
    }

    public Cursor getAllData() {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor res = db.rawQuery("select * from " + TABLE_NAME,null);
        return res;
    }
}

2 个答案:

答案 0 :(得分:0)

只需处理onCreate方法中所有表格的创建,以及onUpgrade中相应的更新或删除和重新创建。

请记住卸载并重新安装您的应用以进行测试,或者增加数据库版本(DatabaseHelper构造函数中的" 1")。否则,您的预先存在的数据库将不会使用新表进行更新,因为系统会检查是否更新了查看版本号,而不是结构。

你还应该使用你在创建语句中定义的常量,我看到你重复了它们。所以:

db.execSQL(" create table " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT,CODE INTEGER,NAME TEXT,USSD TEXT,SMS TEXT)");

变为:

db.execSQL(" create table " + TABLE_NAME + "(" + COL_1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_2 + " INTEGER, " + COL_3 + " TEXT, " + COL_4 + " TEXT, " + COL_5 + " TEXT)");

答案 1 :(得分:0)

您可以在onCreate()方法中添加另一个表:

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(" create table " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT,CODE INTEGER,NAME TEXT,USSD TEXT,SMS TEXT)");
    db.execSQL(//SQL to create second table//);
}