Spanish [SOLUCIONADO]consulta en sqlite B4A

joseIsaac123

Member
Licensed User
hola, he estado buscando en los foros una consulta que me ayude a realizar una verificación (usuario y contraseña) ya tengo la base de datos, la cree en sqlite, solo que no encuentro la manera de realizar esta consulta, si alguien me pudiera orientar se lo agradecería mucho.
 

Descartex

Well-Known Member
Licensed User
Longtime User
Muy buenas.
Has probado a hacer algo asi?
B4X:
If db.ExecQuerySingleResult("SELECT Count(*) FROM Usuarios WHERE user_id=" & id & " and password=" & pass)>0 Then
'Si entra aqui, es q el user existe
Else
'Si entra aqui, el usuario no existe o la pass no es correcta
End If
 

joseIsaac123

Member
Licensed User
Muchas gracias por responder, orita estoy chacando aver si me funciona, pero me da un error
upload_2017-12-27_19-36-20.png
 

Jorge M A

Well-Known Member
Licensed User
El mensaje de error en el log (segunda línea en rojo) te indica que hay un error de sintaxis en la construccion de la sentencia SQL cerca de la palabra "and". Verifica tener los espacios requeridos por la sintaxis y las comillas abiertas y cerradas como corresponda.
Es difícil darte más detalle, porque no se alcanza a ver completo el mensaje de error. Si no lo solucionas, postea completo el mensaje.
 

joseIsaac123

Member
Licensed User
Esta raro mira he estado haciendo pruebas, en el evento click del button2 no tengo ningun error, si me da la cantidad de usuarios registrados con ese nombre y con esa contraseña pero tengo que especificarselo en el codigo ... where nombre='pepe' and contraseña='isaac'
el error me lo da en el evento longclick del button2 que es donde quiero que me lea el edittext.text.
perdon si no soy muy especifico y gracias por la ayuda


ERROR
android.database.sqlite.SQLiteException: no such column: isaac (code 1): , while compiling: select count(*) from datos where nombre=isaac and contraseña=pepe
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1093)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:670)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1440)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1379)
at anywheresoftware.b4a.sql.SQL.ExecQuerySingleResult2(SQL.java:245)
at anywheresoftware.b4a.sql.SQL.ExecQuerySingleResult(SQL.java:234)
at prueba.example.main._button2_longclick(main.java:454)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:186)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:170)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:166)
at anywheresoftware.b4a.objects.ViewWrapper$2.onLongClick(ViewWrapper.java:90)
at android.view.View.performLongClick(View.java:5236)
at android.widget.TextView.performLongClick(TextView.java:10416)
at android.view.View$CheckForLongPress.run(View.java:20883)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5942)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)


FIN DEL ERROR






B4X:
Sub Button2_Click
    

    
Msgbox("El total de datos que coinciden son: "&sql.ExecQuerySingleResult("select count(*) from datos where nombre='pepeee' and contraseña='isaac'")&"","Info")
    


End Sub

Sub button2_longclick
    Dim nombree,contraa As String

    nombree = EditText1.Text
    contraa = EditText2.Text
    If sql.ExecQuerySingleResult("select count(*) from datos where nombre="&EditText1.text&" and contraseña="&EditText2.Text&"")>0 Then
        Msgbox("Este usuario si esta registrado","Exelente")
        
        Else
            Msgbox("Este usuario no existe","Error")
    End If
End Sub
 

Jorge M A

Well-Known Member
Licensed User
Prueba construyéndola con apóstrofe entre los valores.

If sql.ExecQuerySingleResult("select count(*) from datos where nombre=’" & EditText1.text & "’and contraseña=’" &EditText2.Text&"’")>0 Then
Msgbox("Este usuario si esta registrado","Exelente")
 

Descartex

Well-Known Member
Licensed User
Longtime User
Top