2011-10-28 2 views
0

Я хочу создать 2 таблицы в sqlite db. Я вытащил db из эмулятора на компьютер, но вторая таблица не может быть создана, только первая таблица была успешно создана. Могу ли я увидеть, какие успехи в таблице будут созданы или даже данные не были введены? Или сначала я должен ввести данные, затем я могу просмотреть их вручную, сначала вытащив db из эмулятора?Android sqlite несколько таблиц

Вот мой код, чтобы создать многоуровневые таблицы

db.execSQL("CREATE TABLE almag (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, jekel TEXT);"); 
db.execSQL("CREATE TABLE score (_id INTEGER PRIMARY KEY AUTOINCREMENT, score INTEGER, userId INTEGER FOREIGN KEY REFERENCES almag (_id));"); //create table score 
+0

Вы должны увидеть бревно в LogCat, если создание таблицы не удается. Какую версию Android вы используете? Как описано в комментарии в этом вопросе о переполнении стека (http://stackoverflow.com/questions/2545558/foreign-key-constraints-in-android-using-sqlite-on-delete-cascade) внешние ключи не поддерживаются ниже Android 2.2 – thaussma

+0

я использую 2.2. есть ли другой способ создать внешний ключ в 2.2? – kumisku

+0

Если вы не нацелены на более старые версии: http://stackoverflow.com/questions/2545558/foreign-key-constraints-in-android-using-sqlite-on-delete-cascade, в противном случае вам придется писать TRIGGER, которые имитировать ограничение внешнего ключа - Google поможет вам с этим справиться. – Jens

ответ

3

Я уже решил ее, чтобы добавить внешний ключ в Android 2.2 просто нужно добавить эти кодовые

public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE almag (_id INTEGER PRIMARY KEY AUTOINCREMENT, nama TEXT, jekel TEXT);"); 
    db.execSQL("CREATE TABLE score (_id INTEGER PRIMARY KEY AUTOINCREMENT, score INTEGER, userId INTEGER NOT NULL, FOREIGN KEY (userId) REFERENCES almag(_id) ON DELETE CASCADE);"); //create table score 
    db.execSQL("PRAGMA foreign_keys = ON;"); 
} 

ссылка http://panierter-pinguin.de/blog/?p=138

0

Чтобы просмотреть данные вручную (не программный) из базы данных вы можете использовать SQLiteManager плагины Firefox

0

db.execSQL (Table_CREATE_SQL) должен работать нормально в этом случае, но у него нет средств для возврата каких-либо данных, однако он вызывает SQLException, если строка SQL недействительна.

Вы можете вытащить DB & использовать SQLite browser для проверки таблиц.

+0

Я проверил его уже, но просто almag table tht я мог видеть – kumisku

Смежные вопросы