>
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();
}
}
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.
08-18 21:42:59.746: E/AndroidRuntime(720): at android.support.v4.widget.ResourceCursorAdapter.
08-18 21:42:59.746: E/AndroidRuntime(720): at android.support.v4.widget.SimpleCursorAdapter.
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.