1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Login consultando SQLITE

Prezados, estou usando a seguinte rotina para checar uma matricula no sistema:

public String searchPass(String idMatricula)
    {
        bd = this.getReadableDatabase();
        String query = "select matricula from "+TABLE_NAME;
        Cursor cursor = bd.rawQuery(query , null);
        String a, b;
        b = "not found";
        if(cursor.moveToFirst())
        {
            do{
                a = cursor.getString(0);
                Log.i("BD", "ok!");
                if(a.equals(idMatricula))
                {

                    b = cursor.getString(1);
                    Log.i("BD", "ok, leu!");
                    break;
                }
            }
            while(cursor.moveToNext());
        }

        return b;
    }

Essa rotina deve apenas me retornar se a matricula digitada existe no banco. Estou chamando ela da seguinte maneira:

String password = helper.searchPass(str);

Porém da erro e não ler nada e acaba fechando a aplicação.

O erro são esses:

12-29 12:25:11.124: I/BD(5640): ok!
12-29 12:25:11.124: E/CursorWindow(5640): Failed to read row 0, column 1 from a CursorWindow which has 6 rows, 1 columns.
12-29 12:25:11.125: D/AndroidRuntime(5640): Shutting down VM
12-29 12:25:11.125: W/dalvikvm(5640): threadid=1: thread exiting with uncaught exception (group=0x4167ad40)
12-29 12:25:11.134: E/AndroidRuntime(5640): FATAL EXCEPTION: main
12-29 12:25:11.134: E/AndroidRuntime(5640): Process: br.com.stamptwo, PID: 5640
12-29 12:25:11.134: E/AndroidRuntime(5640): java.lang.IllegalStateException: Could not execute method of the activity
12-29 12:25:11.134: E/AndroidRuntime(5640):     at android.view.View$1.onClick(View.java:3841)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at android.view.View.performClick(View.java:4456)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at android.view.View$PerformClick.run(View.java:18465)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at android.os.Handler.handleCallback(Handler.java:733)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at android.os.Handler.dispatchMessage(Handler.java:95)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at android.os.Looper.loop(Looper.java:136)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at android.app.ActivityThread.main(ActivityThread.java:5086)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at java.lang.reflect.Method.invokeNative(Native Method)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at java.lang.reflect.Method.invoke(Method.java:515)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at dalvik.system.NativeStart.main(Native Method)
12-29 12:25:11.134: E/AndroidRuntime(5640): Caused by: java.lang.reflect.InvocationTargetException
12-29 12:25:11.134: E/AndroidRuntime(5640):     at java.lang.reflect.Method.invokeNative(Native Method)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at java.lang.reflect.Method.invoke(Method.java:515)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at android.view.View$1.onClick(View.java:3836)
12-29 12:25:11.134: E/AndroidRuntime(5640):     ... 11 more
12-29 12:25:11.134: E/AndroidRuntime(5640): Caused by: java.lang.IllegalStateException: Couldn't read row 0, col 1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
12-29 12:25:11.134: E/AndroidRuntime(5640):     at android.database.CursorWindow.nativeGetString(Native Method)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at android.database.CursorWindow.getString(CursorWindow.java:434)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at br.com.stamptwo.BDCore.searchPass(BDCore.java:55)
12-29 12:25:11.134: E/AndroidRuntime(5640):     at br.com.stamptwo.PrincipalActivity.onButtonClick(PrincipalActivity.java:66)
12-29 12:25:11.134: E/AndroidRuntime(5640):     ... 14 more

A linha de erro 66, é onde chamo o método para checar a senha.

  • Minha tabela é criada assim: //Criação tabela Contas bd.execSQL("Create TABLE contas (_id INTEGER PRIMARY KEY,"+ "nome TEXT, rg TEXT, cpf INT, matricula TEXT, titulo_eleitor INT, pis INT,"+ "grupo_horario TEXT, celular INT, email TEXT, ativo INT, dia INT, mes INT, ano INT);");

    Renato Souza   29 de dez de 2015
  • Prezados, conseguir resolver o meu problema. Apenas coloquei b = cursor.getString(1); zero aqui no lugar do 1 e foi.

    Renato Souza   29 de dez de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags login ou faça a sua própria pergunta.