Preguntas SQL parametrizadas en Android

He estado buscando qué interfaces / clases existen en Android para consultas parametrizadas y es un poco desordenado.

¿Puede alguien aclarar cuál es el mejor (y el más seguro) entre:

  • Utilizando SQLiteDatabase.query ()
  • Utilizando SQLiteDatabase.rawQuery ()
  • Usando SQLiteStatement
  • Usando SQLiteQueryBuilder
  • Utilizando compileStatement ()
  • Utilizando managedQuery ()
  • Usando ContentValues
  • Utilizando algo más, por ejemplo, execSQL ()

¿Puede alguien explicar por qué existen tantos, cuál es la diferencia entre ellos y cuál es la mejor manera de tener parámetros de enlace para querys?

One Solution collect form web for “Preguntas SQL parametrizadas en Android”

He estado buscando qué interfaces / clases existen en Android para consultas parametrizadas y es un poco desordenado.

Realmente no.

¿Puede alguien aclarar cuál es el mejor (y el más seguro) entre:

No, porque usted no ha definido lo que usted piensa que es el criterio de "mejor".

Utilizando SQLiteDatabase.query () utilizando SQLiteDatabase.rawQuery ()

Personalmente, de estos, utilizo rawQuery() , ya que me parece que es el más legible. IMHO, query() es más para los casos en los que se intenta construir una sentencia SELECT de piezas individuales (por ejemplo, el nombre de la tabla, lista de columnas), porque tal vez algunos de ellos son variables (por ejemplo, diferentes tablas para diferentes usuarios). Al final del día, ambos hacen lo mismo. query() utiliza SQLiteQueryBuilder debajo de las tapas (vea abajo).

Usando SQLiteStatement usando compileStatement ()

Son lo mismo. SQLiteStatement es lo que Java se refiere como una "clase". compileStatement() es lo que Java se refiere como un "método". El método compileStatement() devuelve una instancia de la clase SQLiteStatement .

SQLiteStatement no es útil para las consultas, ya que no puede devolver conjuntos de resultados completos, excepto para las respuestas de una sola columna o una sola fila.

Usando SQLiteQueryBuilder

Esta es otra manera de construir una consulta de piezas individuales. Es útil en casos en los que varias partes deciden lo que va en la consulta, como un ContentProvider y un consumidor de ese ContentProvider . Más allá de eso, sin embargo, al final, ejecuta un rawQuery() . Por lo tanto, no hay diferencia significativa en los resultados de usar SQLiteQueryBuilder o usando rawQuery() directamente.

Utilizando managedQuery ()

Esto está obsoleto y no está relacionado con SQLiteDatabase en ningún caso.

Usando ContentValues

Esto no tiene nada que ver con las consultas en una SQLiteDatabase datos SQLiteDatabase .

¿Puede alguien explicar por qué existen tantos

Algunos sirven diferentes funciones, en muchos casos no tienen nada que ver con las consultas en contra de una SQLiteDatabase datos SQLiteDatabase .

Con respecto a las tres opciones válidas de su lista ( rawQuery() , query() y SQLiteQueryBuilder ), todas hacen lo mismo: query() usa SQLiteQueryBuilder y SQLiteQueryBuilder usa rawQuery() . La única diferencia está en cómo se construye la SELECT SQL SELECT .

  • Problemas para obtener Calendar.WEEK_OF_YEAR
  • ORM en Android SQLite y esquema de base de datos
  • OnUpgrade () base de datos sqlite en Android
  • Consulta SQLite de Android donde columna no es nula y no vacía
  • La restricción de Android Room FOREIGN KEY falló
  • Base de datos de diccionarios sin conexión para la aplicación de Android
  • Falta de tabla en SQLite con la versión específica de HTC DESIRE HD
  • SQLiteStatement ejecuta un SELECT / INSERT / DELETE / UPDATE
  • Cómo hacer la sincronización bidireccional entre Android SQLite y SQL Server
  • Android.database.CursorWindowAllocationException al mover un Cursor
  • Sincronizar las bases de datos sqlite con mysql
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.