>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Erro ao criar relatório de clientes


Ola,

estou tendo uma exception no momento de criar um relatório de clientes.

Segue o codigo:

package dominus.vendas;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.Toast;
import com.example.teste_list_view.R;

public class RelClientes extends Activity{

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.rel_clientes);

SQLiteDatabase db = openOrCreateDatabase("android.db", MODE_PRIVATE, null);
Cursor cursor = db.rawQuery("select * from clientes order by nome", null);

if(cursor.getCount() == 0){
db.close();
Toast.makeText(this, "Não há clientes no banco de dados !", Toast.LENGTH_LONG).show();
return;
}

String [] from = {"id","nome","foneFixo","foneCel","lgr","nro","bairro","cpl"};
int [] to = {R.id.relCliCod,R.id.relCliNome,R.id.relCliTelefone,R.id.relCliCelular,R.id.relCliLgr,R.id.relCliNumero,R.id.relCliBairro,R.id.relCliCpl};
Log.i("vai criar","erro no simple");
android.support.v4.widget.SimpleCursorAdapter sp = new android.support.v4.widget.SimpleCursorAdapter(this, R.layout.modelo_rel_clientes, cursor, from, to,0);
Log.i("vai criar","ué ué");
ListView listView = (ListView)findViewById(R.id.LtwRelClientes);
listView.setAdapter(sp);
db.close();
}
}



5 Respostas


O logCat da exception:

08-18 21:42:59.746: E/AndroidRuntime(720): FATAL EXCEPTION: main
08-18 21:42:59.746: E/AndroidRuntime(720): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.teste_list_view/dominus.vendas.RelClientes}: java.lang.IllegalArgumentException: column '_id' does not exist
08-18 21:42:59.746: E/AndroidRuntime(720): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
08-18 21:42:59.746: E/AndroidRuntime(720): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
08-18 21:42:59.746: E/AndroidRuntime(720): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
08-18 21:42:59.746: E/AndroidRuntime(720): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
08-18 21:42:59.746: E/AndroidRuntime(720): at android.os.Handler.dispatchMessage(Handler.java:99)
08-18 21:42:59.746: E/AndroidRuntime(720): at android.os.Looper.loop(Looper.java:123)
08-18 21:42:59.746: E/AndroidRuntime(720): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-18 21:42:59.746: E/AndroidRuntime(720): at java.lang.reflect.Method.invokeNative(Native Method)
08-18 21:42:59.746: E/AndroidRuntime(720): at java.lang.reflect.Method.invoke(Method.java:521)
08-18 21:42:59.746: E/AndroidRuntime(720): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-18 21:42:59.746: E/AndroidRuntime(720): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-18 21:42:59.746: E/AndroidRuntime(720): at dalvik.system.NativeStart.main(Native Method)
08-18 21:42:59.746: E/AndroidRuntime(720): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
08-18 21:42:59.746: E/AndroidRuntime(720): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
08-18 21:42:59.746: E/AndroidRuntime(720): at android.support.v4.widget.CursorAdapter.init(CursorAdapter.java:174)
08-18 21:42:59.746: E/AndroidRuntime(720): at android.support.v4.widget.CursorAdapter.(CursorAdapter.java:151)
08-18 21:42:59.746: E/AndroidRuntime(720): at android.support.v4.widget.ResourceCursorAdapter.(ResourceCursorAdapter.java:93)
08-18 21:42:59.746: E/AndroidRuntime(720): at android.support.v4.widget.SimpleCursorAdapter.(SimpleCursorAdapter.java:89)
08-18 21:42:59.746: E/AndroidRuntime(720): at dominus.vendas.RelClientes.onCreate(RelClientes.java:32)
08-18 21:42:59.746: E/AndroidRuntime(720): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-18 21:42:59.746: E/AndroidRuntime(720): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
08-18 21:42:59.746: E/AndroidRuntime(720): ... 11 more




Olá Diego,

Olha o erro:

column '_id' does not exist

Veja se tem ela realmente no banco.




rafael ...

acessei os dados via adb e o campo se chama id e não _id , eu ja havia visto que esta acusando que nao existe o campo _id , e realmente não existe no banco, e no comando sql eu faço select *from ... nao estou especificando campos.

sendo assim, nao sei onde esta o erro.




Ola, pesquisando identifiquei que o campo id na vdd deve ser _id, e então resolvi o problema.

Obrigado




Olá

Exato.

Isso porque você está usando o SimpleCursorAdapater, que procura sempre pelo _id.