SQLiteStatement por qué ningún método para la instrucción SELECT – cualquier solución y por qué no hilo seguro

¿Conoce alguna solución para precompilar la instrucción SELECT que devuelve Cursor y usarla varias veces (estoy 99% seguro de que es posible con sqlite como controlador de escritorio java permite la precompilación con SELECT devolver el cursor)? Desafortunadamente como fuente no puedo usar QueryBuilder pero pura SQL String tipo SELECT instrucción (con? Para parámetros). La precompilación sería grande debido a la eficiencia.

Además, ¿qué significa en la práctica que SQLiteStatement no es un thread-safe? ¿Cómo podría reemplazarlo para que los hilos sean seguros y eficientes (precompilación)?

Para precompilar una sentencia, utilice la función compileStatement :

 SQLiteStatement stmt = db.compileStatement("SELECT X FROM Y WHERE Z = ?"); ... stmt.bindString(1, "foo"); String x = stmt.simpleQueryForString(); 

Desafortunadamente, no es posible devolver un cursor de una declaración precompilada. Si desea obtener varias filas o columnas, debe utilizar query o rawQuery .

Tenga en cuenta que SQLite es bastante rápido; No debe molestarse en optimizar la compilación de instrucciones a menos que haya evaluado realmente que es un cuello de botella en su aplicación.

No está claro para mí que la precompilación de un SELECT con parámetros reemplazables (los "marcadores de posición") sea más eficiente que emitir una consulta usando SQLiteDatabase.query (). ¿Qué está llevando a creer que usted necesita para compilar la declaración?

Creo que rawQuery() probablemente precompila la sentencia internamente.

Los argumentos tienen que convertirse en String, en comparación con SQLiteStatement que admiten más tipos de datos.

  • por qué c.moveToFirst () no saltará la primera fila
  • Acceso a los datos principales de iOS desde Android
  • Android, manejar SQLiteConstraintException
  • Android SqliteAssetHelper - fusionar las tablas de la base de datos del activo con el existente
  • AsyncTask de Android y instancia de SQLite DB
  • Usar insertWithOnConflict para actualizar o insertar
  • ¿Cómo almacena una colección de cadenas en SQLite en Android?
  • Cómo insertar marca de tiempo en una columna de base de datos SQLite? Utilizando el tiempo de función ('ahora')?
  • SQLiteOpenHelper onUpgrade () Confusión Android
  • La base de datos SQLite ..onCreate () no se está llamando
  • Consulta de selección en sqlite android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.