как создать две таблицы в одной базе данных - PullRequest
2 голосов
/ 18 декабря 2010

Я пытаюсь создать две таблицы в одной базе данных в sqlite, но создается только первая таблица (sharelist), а вторая таблица (usedlist) не создается.

пожалуйста, помогите мне ...

открытый класс createSqliteHelper extends SQLiteOpenHelper {

 private DatabaseHelper DBHelper;
public static final String KEY_ROWID = "sy_id";

    public static final String KEY_TITLE = "symbol";
    public static final String KEY_POSITION = "position";    
    private static final String TAG = "createSqliteHelper";


private static final String DATABASE_NAME="tradely.db";
 private static final String DATABASE_TABLE = "sharelist";


   private static final String DATABASE_TABLE1 = "usedlist";

private static final int SCHEMA_VERSION=1;

 private DatabaseHelper DBHelper;
    private SQLiteDatabase db;



    private static final String DATABASE_CREATE=("CREATE TABLE IF NOT EXISTS sharelist (_id INTEGER PRIMARY KEY AUTOINCREMENT, category TEXT);");
    private static final String DATABASE_CREATE1=("CREATE TABLE IF NOT EXISTS usedlist( sy_id INTEGER PRIMARY KEY AUTOINCREMENT, symbol TEXT, position INTEGER, FOREIGN KEY (symbol) REFERENCES sharelist(_id);");






    public createSqliteHelper(Context context) {

    super(context, DATABASE_NAME, null, SCHEMA_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {


    try {


        db.execSQL(DATABASE_CREATE);
        db.execSQL(DATABASE_CREATE1);

    }
    catch(SQLiteException e) {
        Log.e("createerr",e.toString());
    }

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    android.util.Log.w("LunchList", "Upgrading database, which will destroy all old data");
    db.execSQL("DROP TABLE IF EXISTS sharelist");
    db.execSQL("DROP TABLE IF EXISTS usedlist");
    onCreate(db);
}

Ответы [ 2 ]

7 голосов
/ 18 декабря 2010

Вам не хватает ) для закрытия второго оператора CREATE TABLE;Таким образом, таблица не создается, и вы получаете эту ошибку.

У вас есть:

sharelist(_id);

И это должно быть:

sharelist(_id) );
0 голосов
/ 18 декабря 2010

Это не ваша непосредственная проблема, но вам, возможно, придется исправить это в ближайшее время: вы создаете столбец TEXT с именем symbol в таблице usedlist.По названию столбца я предполагаю, что вы планируете хранить символ акций в этом столбце.Но symbol объявлен как FOREIGN KEY, который ссылается на столбец с именем _id, который является INTEGER, в таблице sharelist.

Вероятно, было бы лучше переместить symbol в sharelist таблицы и создайте новый столбец в usedlist (скажем, share_id) для ссылки sharelist.

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