Pegar resultado de um Cursor e colocar em uma variavel
6 respostasResolvido
sqlitejavaandroid
G
G.Izidio
Gostaria de saber como posso pegar o resultado de um cursor e colocar em uma variavel String para que eu possa dar um setText em um edit
publicvoidretorno(){AdminSQLiteOpenHelperadmin=newAdminSQLiteOpenHelper(actDigitacao.this);SQLiteDatabasedb=admin.getWritableDatabase();Cursorrs=(db.rawQuery("SELECT P.NOMEPRODUTO FROM PRODUTO P WHERE P.CODBAR='7909189139576'",null));Stringresultado=rs;/////essa Linha está errada e nao me retorna o resultado da queryTextViewtextNomeProduto=(TextView)findViewById(R.id.textNomeProduto);textNomeProduto.setText(rs);
Jonathan deu erro ao executar o procedimento
erro:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=49374, result=-1, data=Intent { act=com.google.zxing.client.android.SCAN flg=0x80000 (has extras) }} to activity {com.example.inventario/com.example.inventario.actDigitacao}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 3
J
Solucao aceita
Jonathan_Medeiros1 like
Provavelmente não retornou nenhum resultado, tem certeza que existe um produto com este ID?
Esse erro que ele retornou é porquê não encontrou nenhum registro no índice que tentou recuperar…
Dessa forma só tentará recuperar o valor caso a consulta tenha retornado informação, isso evita que o erro que tu enviou aconteça novamente!
G
G.Izidio
opa Jonathan tudo blz?
tem um produto com esse ID sim,já até exportei o banco do celular e coloquei no computador para abrir o banco através do SQLiteStudio e rodei a query e tá lá sim
após fazer o procedimento que você me passou a aplicação está retornando esse erro
java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it
mas acredito que daqui já consigo andar sozinho novamente, muito obrigado pela sua ajuda
Edit1: rs vi aqui na net e ninguém tem uma resposta sobre esse erro na aplicação
J
Jonathan_Medeiros
Altera esse cara aqui para isso:
SQLiteDatabase db = admin.getReadableDatabase();
G
G.Izidio1 like
Cara acabei de testar aqui e consegui resolver no meu select eu tive que apelidar a tabela acabou ficando desse jeito
publicvoidretorno(){AdminSQLiteOpenHelperadmin=newAdminSQLiteOpenHelper(actDigitacao.this);SQLiteDatabasedb=admin.getWritableDatabase();Cursorrs=(db.rawQuery("SELECT NOMEPRODUTO nome_produto FROM PRODUTO WHERE CODBAR='7897534812673'",null));//aqui eu apelidei a tabela do resultado para nome_produtoStringresultado="";if(rs.moveToFirst()){resultado=rs.getString(rs.getColumnIndex("nome_produto"));//e coloquei o apelido aqui, acabou resolvendo}else{alert("Produto não encontrado.");}TextViewtextNomeProduto=(TextView)findViewById(R.id.textNomeProduto);textNomeProduto.setText(resultado);
por algum motivo estava dando conflito,muito obrigado você me ajudou muito valeuu