私はアンドロイドのsqliteデータベースでテンポラリテーブルを作成して使いたいと思います。
SQL文は例外なく実行されますが、テーブルは作成されません!以下のサンプルコードで私のアプリを実行する
は、私はテーブル得なかっ:Android sqliteはTEMPテーブルを作成できません
STARTのEDITを
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "mydb.db";
private static DatabaseHelper instance;
public static synchronized DatabaseHelper getHelper(Context context){
if (instance == null)
instance = new DatabaseHelper(context);
return instance;
}
private DatabaseHelper(Context c) {
super(c,DB_NAME,null,1);
}
@Override
public void onConfigure(SQLiteDatabase db) {
super.onConfigure(db);
db.enableWriteAheadLogging();
db.setLocale(Locale.getDefault());
}
@Override
public void onCreate(SQLiteDatabase db) {
// lots of table creation
db.execSQL("CREATE TABLE my_table (id INTEGER PRIMARY KEY, value TEXT)");
// more tables ....
}}
...... sample
DatabaseHelper databaseHelper = DatabaseHelper.getHelper(this);
のEND EDIT
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.execSQL("create TEMP table my_temp_table (id integer primary key, value text)"); // no exceptions
Cursor cursor = db.query("SQLITE_TEMP_MASTER", null, null, null, null, null, null);
while(cur.moveToNext()) {
// no lines (no temporary tables)
}
私はから一時テーブルを作成した場合select文を実行し、作成したテーブルを(同じdb接続内で)クエリすると、 "no such such table .... exception"が表示されます。私を混乱させている何
db.execSQL("create TEMP table my_temp_table as select * from my_table");
Cursor cursor = db.query("temp.my_temp_table", null, null, null, null, null, null);
^^^ no such table: temp.my_temp_table(code 1): , while compiling: SELECT * FROM temp.my_temp_table
は同じSQLコードは、すなわちアプリ外とAndroidデバイスの外SQLiteStudio以内に完璧に動作...ということです。 多分私は何かを有効にするのを忘れていた、または...私は特定のデバイスの許可が必要ですか?
は、あなたのdatabaseHelper.getWritableDatabaseからコードを提供することができます使用するようにコードで()してください? – glethien
私はDatabaseHelperクラスで私のポストを更新しました –
あなたはこれに気づいていますか? http://www.sqlite.org/tempfiles.html#tempdb本当に、あなたはTEMPテーブルを作成した接続を閉じていませんか? – kosa