Bom dia, estou fazendo uma aplicação android, eu consigo salvar o vendedor, depois que salva o vendedor ele chama o login, no login tem um método getConfiguracao, o problema esta no método, no logcat diz que o banco esta fechado.
Códigos?
public class Banco extends SQLiteOpenHelper {
private static final String DB_NAME = “APPSTHMOB.DB”;
private static final Integer DB_VERSION = 1;
private SQLiteDatabase db = null;
public Banco(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(ScriptBanco.tb_android_metadata());
db.execSQL(ScriptBanco.tb_clientes());
db.execSQL(ScriptBanco.tb_configuracoes());
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
@Override
public synchronized void close() {
super.close();
if (db != null) {
db.close();
db = null;
}
}
public SQLiteDatabase escrever(){
return db = getWritableDatabase();
}
public SQLiteDatabase ler(){
return db = getReadableDatabase();
}
}
public class VendedorDao {
private Banco bancoDados;
private Vendedor vendedor = null;
private List<Vendedor> vendedores = null;
private ContentValues values = null;
private Cursor cursor = null;
private SQLiteDatabase db = null;
public VendedorDao(Context context) {
this.bancoDados = new Banco(context);
}
public void salvarVendedor(Vendedor vendedor){
bancoDados.escrever().beginTransaction();
try {
values = new ContentValues();
values.put("id_vendedor",vendedor.getIdVendedor());
values.put("login",vendedor.getLogin());
values.put("senha",vendedor.getSenha());
values.put("desconto",vendedor.getDesconto());
values.put("mac",vendedor.getMac());
values.put("inativo", vendedor.getInativo());
values.put("valor_verba", vendedor.getValorVerba());
bancoDados.escrever().insert("TB_VENDEDORES",null,values);
bancoDados.escrever().setTransactionSuccessful();
} catch (SQLiteException e){
Log.i("Erro ","salvar vendedor" + e.getMessage());
} finally {
bancoDados.escrever().endTransaction();
bancoDados.close();
}
}
public void alterarVendedor(Vendedor vendedor){
bancoDados.escrever().beginTransaction();
try {
values = new ContentValues();
//values.put("id_vendedor", vendedor.getIdVendedor());
values.put("login",vendedor.getLogin());
values.put("senha",vendedor.getSenha());
values.put("desconto",vendedor.getDesconto());
values.put("mac",vendedor.getMac());
values.put("inativo", vendedor.getInativo());
values.put("valorverba", vendedor.getValorVerba());
bancoDados.escrever().update("TB_VENDEDORES",values,"ID_VENDEDOR = ?",new String[]{String.valueOf(vendedor.getIdVendedor())});
bancoDados.escrever().setTransactionSuccessful();
} catch (SQLiteException e){
Log.i("Erro ","salvar vendedor" + e.getMessage());
} finally {
bancoDados.escrever().endTransaction();
bancoDados.escrever().close();
}
}
public Vendedor getVendedor(){
bancoDados.ler().beginTransaction();
try {
cursor = bancoDados.getReadableDatabase().query("TB_VENDEDORES",null,null,null,null,null,null);
while(cursor.moveToNext()){
vendedor = new Vendedor();
vendedor.setIdVendedor(cursor.getInt(cursor.getColumnIndex("ID_VENDEDOR")));
vendedor.setLogin(cursor.getString(cursor.getColumnIndex("LOGIN")));
vendedor.setSenha(cursor.getString(cursor.getColumnIndex("SENHA")));
vendedor.setDesconto(cursor.getString(cursor.getColumnIndex("DESCONTO")));
vendedor.setMac(cursor.getString(cursor.getColumnIndex("MAC")));
vendedor.setInativo(cursor.getString(cursor.getColumnIndex("INATIVO")));
vendedor.setValorVerba(cursor.getDouble(cursor.getColumnIndex("VALOR_VERBA")));
cursor.close();
}
bancoDados.ler().setTransactionSuccessful();
bancoDados.ler().endTransaction();
} catch (SQLiteException e) {
Log.i("Erro ","getVendedor " + e.getMessage());
} finally {
bancoDados.close();
}
return vendedor;
}
public List<Vendedor> listarVendedor(){
vendedores = new ArrayList<>();
bancoDados.ler().beginTransaction();
try {
cursor = bancoDados.getReadableDatabase().query("TB_VENDEDORES",null,null,null,null,null,null);
while(cursor.moveToNext()){
vendedor = new Vendedor();
vendedor.setIdVendedor(cursor.getInt(cursor.getColumnIndex("ID_VENDEDOR")));
vendedor.setLogin(cursor.getString(cursor.getColumnIndex("LOGIN")));
vendedor.setSenha(cursor.getString(cursor.getColumnIndex("SENHA")));
vendedor.setDesconto(cursor.getString(cursor.getColumnIndex("DESCONTO")));
vendedor.setMac(cursor.getString(cursor.getColumnIndex("MAC")));
vendedor.setInativo(cursor.getString(cursor.getColumnIndex("INATIVO")));
vendedor.setValorVerba(cursor.getDouble(cursor.getColumnIndex("VALOR_VERBA")));
vendedores.add(vendedor);
}
bancoDados.ler().setTransactionSuccessful();
cursor.close();
} catch (SQLiteException e) {
Log.i("Erro ","listaVendedor " + e.getMessage());
} finally {
bancoDados.ler().endTransaction();
bancoDados.close();
}
return vendedores;
}
}
As outras classes DAO se baseia nesta!
Falai @Lazaro_Vidal_Teles blz? cara voce postou todo codigo menos essa parte que voce cita aqui [quote=“Lazaro_Vidal_Teles, post:1, topic:397429”]
depois que salva o vendedor ele chama o login, no login tem um método getConfiguracao
[/quote]
Apos voce salvar no bloco finally existe um banco.close() é provavel que quando executa o getConfiguracao voce não esteja abrindo o banco, pois o mesmo foi fechado no bloco finally.
No aguardo dessa parte faltante para que possamos dar a solução mais precisa.
Abraços
Max