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)?
- ¿Cómo puedo ordenar mi base de datos SQLITE en orden descendente, para una aplicación de Android?
- Cómo consultar una tabla FTS4 de contenido externo pero devolver columnas adicionales de la tabla de contenido original
- ¿Cuántas filas puedo insertar en una tabla en SQLite Android?
- Android 6.0 y superiores no se borran los datos de sqlite del teléfono después de desinstalar la aplicación
- Sqlite en Android: Cómo crear una función sqlite dist db - que se utilizará en la aplicación para calcular la distancia utilizando lat, largo
- Compruebe si el cursor tiene resultados
- Caracteres especiales de Android Sqlite
- ¿Cuál es la ventaja de usar SQLite en lugar de File?
- Cómo extraer el cursor y el valor entero de una matriz de clase Object
- SQLite Context.MODE_PRIVATE
- Android - ¿Se puede utilizar el Cursor SQLite después de cerrar la base de datos?
- ¿Existe un caché de memoria para SQLite en Android y cómo liberarlo o borrarlo?
- SQLiteException - sólo ocurre en algunos dispositivos
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.
- Resolver conflictos entre android: gravedad y android: layout_gravity
- Cómo manejar correctamente startForegrounds dos notificaciones