2012-03-08 12 views
7

próbowałem stworzyć tabelę tymczasową (sqlite) w AndroidzieNie można utworzyć tabeli temp w Android SQLite

Oto fragment kodu:

// No error - But cannot create TEMP table 
database.rawQuery("CREATE TEMP TABLE IF NOT EXISTS tt1 (unread_message int, target varchar)", null); 

// Error - android.database.sqlite.SQLiteException: no such table: tt1: , while compiling: INSERT INTO tt1 SELECT count(*), target FROM messages where read_status=0 and direction=1 GROUP BY target 
database.rawQuery("INSERT INTO tt1 SELECT count(*), target FROM messages where read_status=0 and direction=1 GROUP BY target", null); 

nie ma błędu dla stworzenia TEMP zapytania TABELA , ale narzeka, że ​​tt1 nie istnieje w drugim zapytaniu. Czy tworzę tabelę TEMP w niewłaściwy sposób?

+0

Ale oba pytania pracować w SQLite Manager (Firefox plug-in). Przeszukałem "zakres SQL" i nadal nie jestem gotowy, aby zrozumieć, co to jest "zasięg problemu". Czy możesz mi powiedzieć coś więcej na temat "problemu z zasięgiem"? dzięki –

+0

czy to nie powinno być policzone (cel)? – njzk2

Odpowiedz

12

Zazwyczaj nie powinieneś używać rawQuery do tworzenia tabel i robienia wstawek - spróbuj użyć SQLiteDatabase#execSQL.

Przykład ten działa co najmniej:

SQLiteOpenHelper dummy = new SQLiteOpenHelper(this, "mobileAppBeginner.db", null, 1) { 
     @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} 
     @Override public void onCreate(SQLiteDatabase db) {} 
    }; 

    SQLiteDatabase db = dummy.getWritableDatabase(); 
    db.execSQL("CREATE TEMP TABLE messages (read_status INTEGER, direction INTEGER, target TEXT)"); 
    db.execSQL("CREATE TEMP TABLE IF NOT EXISTS tt1 (unread_message int, target varchar)"); 
    db.execSQL("INSERT INTO tt1 SELECT count(*), target FROM messages where read_status=0 and direction=1 GROUP BY target"); 
+0

Czy możemy użyć tego do wcześniej utworzonej bazy danych? Właściwie mam kilka tabel w mojej bazie danych i jeśli potrzebuję tabeli TEMP w czasie wykonywania, to w jaki sposób mogę użyć. Tutaj stworzyłem bazę danych już. – gowri

Powiązane problemy