Как создать более одной таблицы в sqlite в Android? - PullRequest
2 голосов
/ 21 июля 2011

У меня есть три таблицы в моей базе данных. Я пробую много примеров, касающихся создания БД в sqlite, и это работает, найти, что большинство из них только одна таблица ....

Я пытаюсь разными способами, например, выполнять запросы db.execSQL (запрос), чтобы создать каждую таблицу в onCreate, но она вызывает ошибки ..

ТАК. Есть ли хорошие стратегии для создания более одной таблицы ??? я должен создать много представлений класса для каждой таблицы, расширяет SQLiteOpenHelper ???

Thx

вот часть моего класса расширяет SQLiteOpenHelper

public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    try{
        db.execSQL(CREATE_TABLE_1);
        db.execSQL(CREATE_TABLE_2);
        db.execSQL(CREATE_TABLE_3);
    }catch( Exception e){
        Log.e("dbAdapter", e.getMessage().toString());
    }

}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_1);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_2);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_3);
    onCreate(db);
}

похоже table2, а table3 не создать Потому что, когда я вставляю данные в таблицу 2, я получаю сообщение об ошибке - не найден такой table2 !!!

вот моя строка созданной таблицы:

//create script patient
public static String CREATE_TABLE_1= "create table " +
TABLE_USER + " (" +
USER_ID + " integer primary key autoincrement, " +
USER_NAME + " text not null, " +
DEVICE_KEY + " text not null  );" ;

public static String CREATE_TABLE_2= "create table " +
TABLE_GPS_SETTING + " (" +
SETTIN + " integer primary key autoincrement, " +
REFRESVAL + " long not null, " +
ODE + " varchar(20), " +
_TYPE + " varchar(20) );" ;

public static String CREATE_TABLE_3= "create table " +
TABLE_W + " (" +
GPD + " integer primary key autoincrement, " +
LITUDE + " double, " +
LITUDE + " double, " + 
ATUDE + "integer,"+
M + "integer,"+
DTION + "integer,"+
DANCE + "integer,"+
LDD + "integer,"+
SESID + "double,"+
ACCCY + "double,"+
TMP + "long,"+
TATE + "TEXT,"+
D_ID + "TEXT);" ;

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 21 июля 2011

Я считаю, что не существует в SQLite . Используйте text.

4 голосов
/ 21 июля 2011

Вы можете создать столько таблиц, сколько захотите.

 db.execSQL(TABLE1);
 db.execSQL(TABLE2);

, где TABLE1 - строка, содержащая команду создания таблицы

Проблема в том, что вы пытаетесь создать таблицу после созданиябаза данных. Удалите приложение, а затем запустите с операторами SQL для создания таблиц в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...