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
public void retorno(){
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(actDigitacao.this);
SQLiteDatabase db = admin.getWritableDatabase();
Cursor rs = (db.rawQuery("SELECT P.NOMEPRODUTO FROM PRODUTO P WHERE P.CODBAR='7909189139576'", null));
String resultado = rs; /////essa Linha está errada e nao me retorna o resultado da query
TextView textNomeProduto = (TextView) findViewById(R.id.textNomeProduto);
textNomeProduto.setText(rs);
Tenta da seguinte forma:
String resultado = rs.getString(rs.getColumnIndex("NOMEPRODUTO"));
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
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…
Faça um teste:
String resultado = "";
if (rs.moveToFirst()) {
resultado = rs.getString(rs.getColumnIndex("NOMEPRODUTO"));
}
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!
1 curtida
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
Altera esse cara aqui para isso:
SQLiteDatabase db = admin.getReadableDatabase();
Cara acabei de testar aqui e consegui resolver no meu select eu tive que apelidar a tabela acabou ficando desse jeito
public void retorno(){
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(actDigitacao.this);
SQLiteDatabase db = admin.getWritableDatabase();
Cursor rs = (db.rawQuery("SELECT NOMEPRODUTO nome_produto FROM PRODUTO WHERE CODBAR='7897534812673'",null)); //aqui eu apelidei a tabela do resultado para nome_produto
String resultado = "";
if (rs.moveToFirst()) {
resultado = rs.getString(rs.getColumnIndex("nome_produto")); //e coloquei o apelido aqui, acabou resolvendo
} else {
alert("Produto não encontrado.");
}
TextView textNomeProduto = (TextView) findViewById(R.id.textNomeProduto);
textNomeProduto.setText(resultado);
por algum motivo estava dando conflito,muito obrigado você me ajudou muito valeuu
1 curtida