2
Could someone help me? I’ve done several ways but the app gives error and closes. I am using database (Sqlite) when have to search gives the error:
01-05 03:40:18.544: E/AndroidRuntime(12226): FATAL EXCEPTION: main
01-05 03:40:18.544: E/AndroidRuntime(12226): Process: com.example.acquaconnect, PID: 12226
01-05 03:40:18.544: E/AndroidRuntime(12226): java.lang.IllegalStateException: Could not execute method of the activity
01-05 03:40:18.544: E/AndroidRuntime(12226): at android.view.View$1.onClick(View.java:3841)
01-05 03:40:18.544: E/AndroidRuntime(12226): at android.view.View.performClick(View.java:4456)
01-05 03:40:18.544: E/AndroidRuntime(12226): at android.view.View$PerformClick.run(View.java:18482)
01-05 03:40:18.544: E/AndroidRuntime(12226): at android.os.Handler.handleCallback(Handler.java:733)
01-05 03:40:18.544: E/AndroidRuntime(12226): at android.os.Handler.dispatchMessage(Handler.java:95)
01-05 03:40:18.544: E/AndroidRuntime(12226): at android.os.Looper.loop(Looper.java:136)
01-05 03:40:18.544: E/AndroidRuntime(12226): at android.app.ActivityThread.main(ActivityThread.java:5097)
01-05 03:40:18.544: E/AndroidRuntime(12226): at java.lang.reflect.Method.invokeNative(Native Method)
01-05 03:40:18.544: E/AndroidRuntime(12226): at java.lang.reflect.Method.invoke(Method.java:515)
01-05 03:40:18.544: E/AndroidRuntime(12226): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
01-05 03:40:18.544: E/AndroidRuntime(12226): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
01-05 03:40:18.544: E/AndroidRuntime(12226): at dalvik.system.NativeStart.main(Native Method)
01-05 03:40:18.544: E/AndroidRuntime(12226): Caused by: java.lang.reflect.InvocationTargetException
01-05 03:40:18.544: E/AndroidRuntime(12226): at java.lang.reflect.Method.invokeNative(Native Method)
01-05 03:40:18.544: E/AndroidRuntime(12226): at java.lang.reflect.Method.invoke(Method.java:515)
01-05 03:40:18.544: E/AndroidRuntime(12226): at android.view.View$1.onClick(View.java:3836)
01-05 03:40:18.544: E/AndroidRuntime(12226): ... 11 more
0 1-05 03:40:18.544: E/AndroidRuntime(12226): Caused by: java.lang.NullPointerException
01-05 03:40:18.544: E/AndroidRuntime(12226): at c om.example.Banco.RepositorioClientes.buscarClientes(RepositorioClientes.java:198)
01-05 03:40:18.544: E/AndroidRuntime(12226): at com.example.acquaconnect.Login.buscarClientes(Login.java:103)
01-05 03:40:18.544: E/AndroidRuntime(12226): at com.example.acquaconnect.Login.butEntrar(Login.java:37)
01-05 03:40:18.544: E/AndroidRuntime(12226): ... 14 more
Error line (line 37)
}else if ( loginCliente.equals(buscarClientes(loginCliente))){
Code
public class Login extends ActionBarActivity {
private EditText vlogin;
private EditText vsenha;
Bundle params = new Bundle();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
vlogin = (EditText) findViewById(R.id.TextLogin);
vsenha = (EditText) findViewById(R.id.TextSenha);
}
public void butEntrar(View v) {
String loginCliente = vlogin.getText().toString();
String senhaCliente = vsenha.getText().toString();
if(loginCliente.equals("") || senhaCliente.equals("")){
Toast toast = Toast.makeText(this ,"Campo(s) vazio(s)!!", Toast.LENGTH_SHORT);
toast.show();
}else if ( loginCliente.equals(buscarClientes(loginCliente))){
Clientes c = buscarClientes(loginCliente);
String Login = c.login;
String Senha = c.senha;
if(senhaCliente.equals(Senha)){
//declaração para envio de informaçoes
//Bundle params = new Bundle();
params.putLong("id", c.id);
params.putString("nivel", c.nivel);
params.putString("nome", c.nome);
params.putString("login", c.login);
params.putString("senha", c.senha);
params.putString("ncel", c.ncel);
params.putString("numbomba", c.numbomba);
params.putString("b1", c.b1);
params.putString("b2", c.b2);
params.putString("b3", c.b3);
params.putString("b4", c.b4);
params.putString("b5", c.b5);
params.putString("b6", c.b6);
//usuario
if(String.valueOf("1").equals(c.nivel)){
//mandar dados cliente---passagem de paramentros
//envia os dados para a prox activity
Intent intent = new Intent(this, Usuario.class);
intent.putExtras(params);
startActivity(intent);
}
//adm
else if(String.valueOf("2").equals(c.nivel)){
//envia os dados para a prox activity
Intent intent = new Intent(this, ConfigADM.class);
intent.putExtras(params);
startActivity(intent);
}
}/*fim if senha*/else{
Toast toast = Toast.makeText(this ,"Login não encontrado!!", Toast.LENGTH_SHORT);
toast.show();
}
}
}//botao
private Toast toast;
private long lastBackPressTime = 0;
@Override
public void onBackPressed() {
if (this.lastBackPressTime < System.currentTimeMillis() - 4000) {
toast = Toast.makeText(this, "Pressione novamente para sair.", 4000);
toast.show();
this.lastBackPressTime = System.currentTimeMillis();
} else {
if (toast != null) {
toast.cancel();
}
super.onBackPressed();
}
}
//Busca um Cliente pelo login
public Clientes buscarClientes(String loginCliente) {
Clientes clientes = RepositorioClientes.buscarClientes(loginCliente);
return clientes;
}
}
Error line (line 198)
Cursor c = db.query( NOME_TABELA, Clientes.colunas, Cliente.LOGIN + "='" + login + "'", null, null, null, null);
Code
public class RepositorioClientes {
private static final String CATEGORIA = "acqua";
// Nome do banco
private static final String NOME_BANCO = "acquaconnect";
// Nome da tabela
public static final String NOME_TABELA = "clientes";
protected static SQLiteDatabase db;
public RepositorioClientes(Context ctx) {
// Abre o banco de dados já existente
db = ctx.openOrCreateDatabase(NOME_BANCO, Context.MODE_PRIVATE, null);
}
public RepositorioClientes() {
// Apenas para criar uma subclasse...
}
// Salva o cliente, insere um novo ou atualiza
public long salvar(Clientes clientes) {
long id = clientes.id;
if (id != 0) {
atualizar(clientes);
} else {
// Insere novo
id = inserir(clientes);
}
return id;
}
// Insere um novo Clientes
public long inserir(Clientes clientes) {
ContentValues values = new ContentValues();
values.put(Cliente.NIVEL, clientes.nivel);
values.put(Cliente.NOME, clientes.nome);
values.put(Cliente.LOGIN, clientes.login);
values.put(Cliente.SENHA, clientes.senha);
values.put(Cliente.NCEL, clientes.ncel);
values.put(Cliente.NUMBOMBA, clientes.numbomba);
values.put(Cliente.B1, clientes.b1);
values.put(Cliente.B2, clientes.b2);
values.put(Cliente.B3, clientes.b3);
values.put(Cliente.B4, clientes.b4);
values.put(Cliente.B5, clientes.b5);
values.put(Cliente.B6, clientes.b6);
long id = inserir(values);
return id;
}
// Insere um novo Clientes
public long inserir(ContentValues valores) {
long id = db.insert(NOME_TABELA, "", valores);
return id;
}
// Atualiza o Clientes no banco. O id do Clientes é utilizado.
public int atualizar(Clientes clientes) {
ContentValues values = new ContentValues();
values.put(Cliente.NIVEL, clientes.nivel);
values.put(Cliente.NOME, clientes.nome);
values.put(Cliente.LOGIN, clientes.login);
values.put(Cliente.SENHA, clientes.senha);
values.put(Cliente.NCEL, clientes.ncel);
values.put(Cliente.NUMBOMBA, clientes.numbomba);
values.put(Cliente.B1, clientes.b1);
values.put(Cliente.B2, clientes.b2);
values.put(Cliente.B3, clientes.b3);
values.put(Cliente.B4, clientes.b4);
values.put(Cliente.B5, clientes.b5);
values.put(Cliente.B6, clientes.b6);
String _id = String.valueOf(clientes.id);
String where = Cliente._ID + "=?";
String[] whereArgs = new String[] { _id };
int count = atualizar(values, where, whereArgs);
return count;
}
// Atualiza o cliente com os valores abaixo
// A cláusula where é utilizada para identificar o cliente a ser atualizado
public int atualizar(ContentValues valores, String where, String[] whereArgs) {
int count = db.update(NOME_TABELA, valores, where, whereArgs);
Log.i(CATEGORIA, "Atualizou [" + count + "] registros");
return count;
}
// Deleta o Cliente com o id fornecido
public int deletar(long id) {
String where = Cliente._ID + "=?";
String _id = String.valueOf(id);
String[] whereArgs = new String[] { _id };
int count = deletar(where, whereArgs);
return count;
}
// Deleta o Cliente com os argumentos fornecidos
public int deletar(String where, String[] whereArgs) {
int count = db.delete(NOME_TABELA, where, whereArgs);
Log.i(CATEGORIA, "Deletou [" + count + "] registros");
return count;
}
// Retorna um cursor com todos os clientes
public Cursor getCursor() {
try {
// select * from carros
return db.query(NOME_TABELA, Clientes.colunas, null, null, null, null, null, null);
} catch (SQLException e) {
Log.e(CATEGORIA, "Erro ao buscar o cliente: " + e.toString());
return null;
}
}
// Retorna uma lista com todos os clientes
public List<Clientes> listarCliente() {
Cursor c = getCursor();
List<Clientes> cliente = new ArrayList<Clientes>();
if (c.moveToFirst()) {
// Recupera os índices das colunas
int idxId = c.getColumnIndex(Cliente._ID);
int idxNivel = c.getColumnIndex(Cliente.NIVEL);
int idxNome = c.getColumnIndex(Cliente.NOME);
int idxLogin = c.getColumnIndex(Cliente.LOGIN);
int idxSenha = c.getColumnIndex(Cliente.SENHA);
int idxNcel = c.getColumnIndex(Cliente.NCEL);
int idxNumBomba = c.getColumnIndex(Cliente.NUMBOMBA);
int idxB1 = c.getColumnIndex(Cliente.B1);
int idxB2 = c.getColumnIndex(Cliente.B2);
int idxB3 = c.getColumnIndex(Cliente.B3);
int idxB4 = c.getColumnIndex(Cliente.B4);
int idxB5 = c.getColumnIndex(Cliente.B5);
int idxB6 = c.getColumnIndex(Cliente.B6);
// Loop até o final
do {
Clientes clientes = new Clientes();
cliente.add(clientes);
// recupera os atributos de cliente
clientes.id = c.getLong(idxId);
clientes.nivel = c.getString(idxNivel);
clientes.nome = c.getString(idxNome);
clientes.login = c.getString(idxLogin);
clientes.senha = c.getString(idxSenha);
clientes.ncel = c.getString(idxNcel);
clientes.numbomba = c.getString(idxNumBomba);
clientes.b1 = c.getString(idxB1);
clientes.b2 = c.getString(idxB2);
clientes.b3 = c.getString(idxB3);
clientes.b4 = c.getString(idxB4);
clientes.b5 = c.getString(idxB5);
clientes.b6 = c.getString(idxB6);
} while (c.moveToNext());
}
return cliente;
}
// Busca o cliente pelo login "select * from cliente where nome=?" MODIFICANDOO
public static Clientes buscarClientes(String login) {
Clientes clientes = null;
try {
// Idem a: SELECT _id,nivel,nome,login,senha,ncel,numbomba,b1,b2,b3,b4,b5,b6 from CARRO where login = ?
Cursor c = db.query( NOME_TABELA, Clientes.colunas, Cliente.LOGIN + "='" + login + "'", null, null, null, null);
// Se encontrou...
if (c.moveToNext()) {
clientes = new Clientes();
// utiliza os métodos getLong(), getString(), getInt(), etc para recuperar os valores
clientes.id = c.getLong(0);
clientes.nivel = c.getString(1);
clientes.nome = c.getString(2);
clientes.login = c.getString(3);
clientes.senha = c.getString(4);
clientes.ncel = c.getString(5);
clientes.numbomba = c.getString(6);
clientes.b1 = c.getString(7);
clientes.b2 = c.getString(8);
clientes.b3 = c.getString(9);
clientes.b4 = c.getString(10);
clientes.b5 = c.getString(11);
clientes.b6 = c.getString(12);
}
} catch (SQLException e) {
Log.e(CATEGORIA, "Erro ao buscar o cliente" + e.toString());
return null;
}
return clientes;
}
// Busca o carro pelo id
public Clientes buscarClientesporID(long id) {
// select * from carro where _id=?
Cursor c = db.query(true, NOME_TABELA, Clientes.colunas, Cliente._ID + "=" + id, null, null, null, null, null);
if (c.getCount() > 0) {
// Posicinoa no primeiro elemento do cursor
c.moveToFirst();
Clientes clientes = new Clientes();
// Lê os dados
clientes.id = c.getLong(0);
clientes.nivel = c.getString(1);
clientes.nome = c.getString(2);
clientes.login = c.getString(3);
clientes.senha = c.getString(4);
clientes.ncel = c.getString(5);
clientes.numbomba = c.getString(6);
clientes.b1 = c.getString(7);
clientes.b2 = c.getString(8);
clientes.b3 = c.getString(9);
clientes.b4 = c.getString(10);
clientes.b5 = c.getString(11);
clientes.b6 = c.getString(12);
return clientes;
}
return null;
}
// Busca um carro utilizando as configurações definidas no
// SQLiteQueryBuilder
// Utilizado pelo Content Provider de carro
public Cursor query(SQLiteQueryBuilder queryBuilder, String[] projection, String selection, String[] selectionArgs,
String groupBy, String having, String orderBy) {
@SuppressWarnings("static-access")
Cursor c = queryBuilder.query(this.db, projection, selection, selectionArgs, groupBy, having, orderBy);
return c;
}
// Fecha o banco
public void fechar() {
// fecha o banco de dados
if (db != null) {
db.close();
}
}
}
According to his stack trace, the error is on the line
198
of the archiveRepositorioClientes.java
, methodcom.example.Banco.RepositorioClientes.buscarClientes
. Please post the code of this method, indicating which line is 198, so we will know exactly which variable is null and what may be causing it. (P.S. if possible also indicate which line37
ofbutEntrar
, for this is who callsbuscarClientes
)– mgibsonbr
You even called the builder
RepositorioClientes
at some point? I notice the static fielddb
is void until someone calls the builder passing aContext
, and if it is not done before calling itselfRepositorioClientes.buscarClientes
this would be one of the possible causes of your mistake (the others beingClientes
void orCliente
null - which doesn’t make much sense). Regardless, in my opiniondb
andbuscarClientes
should not be static, but members of the...– mgibsonbr
I didn’t call the builder no... I’ll take a look at these points here then.
– Jéssica Luiza
Tip: Use Ormlite framework http://ormlite.com/
– Cícero Moura