2012-03-08 32 views
7

Tôi đã cố gắng để tạo ra một bảng tạm thời (sqlite) trong AndroidKhông thể tạo bảng TEMP trong Android sqlite

Dưới đây là đoạn mã:

// 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); 

Không có lỗi cho tạo TEMP TABLE truy vấn , nhưng nó than phiền tt1 không tồn tại trong truy vấn thứ hai. Tôi có tạo bảng TEMP theo cách sai không?

+0

Nhưng cả hai truy vấn làm việc trong SQLite Manager (Firefox plug-in). Tôi đã tìm kiếm 'phạm vi SQL' và vẫn chưa sẵn sàng hiểu 'vấn đề phạm vi' là gì. Bạn có thể cho tôi biết thêm về 'vấn đề phạm vi' không? cảm ơn –

+0

không nên tính (mục tiêu)? – njzk2

Trả lời

12

Thông thường bạn không nên sử dụng rawQuery để tạo bảng và chèn - hãy thử sử dụng SQLiteDatabase#execSQL.

dụ này hoạt động ít nhất là:

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

Chúng tôi có thể sử dụng điều này cho Cơ sở dữ liệu đã tạo trước đó không? Trên thực tế tôi có một số bảng trong cơ sở dữ liệu của tôi và nếu tôi cần một bảng TEMP tại thời gian chạy có nghĩa là làm thế nào tôi có thể sử dụng. Ở đây tôi đã tạo ra một cơ sở dữ liệu đã. – gowri

Các vấn đề liên quan