Estoy tratando de crear un formulario de inicio de sesión simple, donde comparo el ID de inicio de sesión y la contraseña ingresados en la pantalla de inicio de sesión con los almacenados en la base de datos.
Estoy usando la siguiente consulta:
final String DATABASE_COMPARE =
"select count(*) from users where uname=" + loginname + "and pwd=" + loginpass + ");" ;
El problema es, no sé, cómo puedo ejecutar la consulta anterior y almacenar el recuento devuelto.
Así es como se ve la tabla de la base de datos (me las arreglé para crear la base de datos con éxito usando el método execSQl)
private static final String
DATABASE_CREATE =
"create table users (_id integer autoincrement, "
+ "name text not null, uname primary key text not null, "
+ "pwd text not null);";//+"phoneno text not null);";
¿Puede alguien guiarme amablemente sobre cómo puedo lograr esto? Si es posible, proporcione un fragmento de muestra para realizar la tarea anterior.
SELECT COUNT(*)
yqueryNumEntries()
recuperar todos los registros y ver cuántos hay, es decir.cursor.getCount()
@scottyab, el DatabaseUtils.queryNumEntries (db, table, whereparams) parametrizado existe en API 11 +, el que no tiene whereparams existe desde API 1 . La respuesta debería ser la creación de un Cursor con un db.rawQuery:
También me gusta la respuesta de @ Dre, con la consulta parametrizada.
fuente
mCount.getInt()
escolumnindex
. ¡Gracias por la ayuda!Utilice un SQLiteStatement .
p.ej
fuente
?
s en la consulta y luego usarbindString(int, String)
ybindLong(int, long)
para insertar los valores. Vea aquí .Consulte rawQuery (String, String []) y la documentación de Cursor
Su declaración SQL DADABASE_COMPARE no es válida actualmente
loginname
yloginpass
no se escapará, no hay espacio entreloginname
yand
, y finaliza la declaración con); en vez de ; - Si estuviera iniciando sesión como bob con la contraseña de contraseña, esa declaración terminaría comoAdemás, probablemente debería usar la función selectionArgs, en lugar de concatenar nombre de usuario y contraseña de inicio de sesión.
Para usar selectionArgs, haría algo como
fuente
Suponiendo que ya tiene establecida una
db
conexión Database ( ), creo que la forma más elegante es seguir laCursor
clase y hacer algo como:fuente
cómo obtener la columna de recuento
Esta es la alternativa más concisa y precisa. No es necesario manejar cursores y su cierre.
fuente
Si está utilizando ContentProvider, puede utilizar:
fuente
Otra forma sería usar:
en un Cursor como:
Si puede pensar en alejarse de la consulta en bruto.
fuente
Si desea obtener el recuento de registros, debe aplicar el grupo por en algún campo o aplicar la siguiente consulta.
Me gusta
fuente
fuente