[RESOLVIDO] Erro ao acessar classe DAO e banco de dados

1 resposta Resolvido
sqliteandroidjava
kmunga

Boa noite, estou com um problema, para fins de estudo estou criando um aplicativo que cadastra dados de cães, ele “puxa” os dados de um arquivo xml e os armazena em uma classe DAO que vai ser passada a classe que controla a questão do banco de dados.

Esta dando esse erro

07-09 21:45:49.292 3259-3259/langergluss.langerflussdogcare E/AndroidRuntime: FATAL EXCEPTION: main

Process: langergluss.langerflussdogcare, PID: 3259

java.lang.NullPointerException: Attempt to invoke virtual method void langergluss.langerflussdogcare.bancodados.BancoController.inserir(langergluss.langerflussdogcare.controller.DAO) on a null object reference

at langergluss.langerflussdogcare.Cadastrar$1.onClick(Cadastrar.java:47)

at android.view.View.performClick(View.java:5198)

at android.view.View$PerformClick.run(View.java:21147)

at android.os.Handler.handleCallback(Handler.java:739)

at android.os.Handler.dispatchMessage(Handler.java:95)

at android.os.Looper.loop(Looper.java:148)

at android.app.ActivityThread.main(ActivityThread.java:5417)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

A classe cadastrar

import android.os.Bundle;

import android.support.annotation.Nullable;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import langergluss.langerflussdogcare.bancodados.BancoController;
import langergluss.langerflussdogcare.controller.DAO;

public class Cadastrar extends AppCompatActivity {

private EditText nomeCao,nascimentoCao,primeiraVacina,intervaloVacina,
primeiroVermifugo,intervaloVermifugo;
private Button botaoSalvar;
private DAO dao;
private BancoController bancoController;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.cadastrar);
}

@Override
protected void onResume() {
    super.onResume();
    nomeCao = (EditText) findViewById(R.id.nomeCao);
    nascimentoCao = (EditText) findViewById(R.id.nascimento);
    primeiraVacina = (EditText) findViewById(R.id.primeiraVacina);
    intervaloVacina = (EditText) findViewById(R.id.intervaloVacina);
    primeiroVermifugo = (EditText) findViewById(R.id.primeiroVermifugo);
    intervaloVermifugo = (EditText) findViewById(R.id.intervaloVermifugo);
    botaoSalvar = (Button) findViewById(R.id.botaoSalvar);

    botaoSalvar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            dao= new DAO();
            dao.setNomeCao(nomeCao.getText().toString());
            dao.setPrimeiraVacina(primeiraVacina.getText().toString());
            dao.setIntervaloVacina(Integer.parseInt(intervaloVacina.getText().toString()));
            dao.setPrimeiroVermifugo(primeiroVermifugo.getText().toString());
            dao.setIntervaloVermifugo(Integer.parseInt(intervaloVermifugo.getText().toString()));
            bancoController.inserir(dao);
        }
    });
}

}

A classe que controla o banco de dados

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.util.Log;

import langergluss.langerflussdogcare.controller.DAO;

public class BancoController {

private SQLiteDatabase db;

private CriaBanco banco;
public BancoController(Context baseContext) {
    //cria banco
    banco = new CriaBanco(baseContext);
}

public Boolean isDados() {
    Boolean isDados = true;
    db = banco.getReadableDatabase();
    Cursor cursor;
    cursor = db.rawQuery("SELECT COUNT (*) FROM " + banco.TABELA, null);
    if (cursor != null){
        cursor.moveToFirst();
        if(cursor.getInt(0)== 0){
            isDados= false;
        }
    }
    db.close();
    return isDados;
}

public void inserir(DAO dao) {
    ContentValues valores;
    long resultado;
    db = banco.getWritableDatabase();
    valores = new ContentValues();
    valores.put(banco.NOME_CAO,dao.getNomeCao());
    valores.put(banco.ANIVERSARIO_CAO,dao.getNascimentoCao());
    valores.put(banco.PRIMEIRA_VACINA, dao.getPrimeiraVacina());
    valores.put(banco.INTERVALO_VACINA, dao.getIntervaloVacina());
    valores.put(banco.PRIMEIRA_VERMIFUGO, dao.getPrimeiroVermifugo());
    valores.put(banco.INTERVALO_VERMIFUGO, dao.getIntervaloVermifugo());
    resultado = db.insert(banco.TABELA,null, valores);
    db.close();
    if (resultado == 1) {
        Log.d("Aplicativo","Erro ao insetir registro");
    } else {
        Log.d("Aplicativo","Sucesso ao inserir");
    }
}

}

e finalmente a classe DAO

public class DAO {

private String nomeCao;
private String nascimentoCao;
private String primeiraVacina;
private Integer intervaloVacina;
private String primeiroVermifugo;
private Integer intervaloVermifugo;



public String getNomeCao() {
    return nomeCao;
}

public void setNomeCao(String nomeCao) {
    this.nomeCao = nomeCao;
}

public String getNascimentoCao() {
    return nascimentoCao;
}

public void setNascimentoCao(String nascimentoCao) {
    this.nascimentoCao = nascimentoCao;
}

public String getPrimeiraVacina() {
    return primeiraVacina;
}

public void setPrimeiraVacina(String primeiraVacina) {
    this.primeiraVacina = primeiraVacina;
}

public Integer getIntervaloVacina() {
    return intervaloVacina;
}

public void setIntervaloVacina(Integer intervaloVacina) {
    this.intervaloVacina = intervaloVacina;
}

public String getPrimeiroVermifugo() {
    return primeiroVermifugo;
}

public void setPrimeiroVermifugo(String primeiroVermifugo) {
    this.primeiroVermifugo = primeiroVermifugo;
}

public Integer getIntervaloVermifugo() {
    return intervaloVermifugo;
}

public void setIntervaloVermifugo(Integer intervaloVermifugo) {
    this.intervaloVermifugo = intervaloVermifugo;
}

}

1 Resposta

kmunga
Solucao aceita

Não tinha inicializado o BancoController e por isso não estava acessando, inicializei e deu certo.

Criado 9 de julho de 2018
Ultima resposta 9 de jul. de 2018
Respostas 1
Participantes 1