Sqlite só acessa o banco em um aparelho.

27/03/2017

2

Eu criei uma aplicação em Android que acessa o banco SqLite, a primeira aplicação que eu criei funciona normalmente! Kkk! A aplicação que funciona é da versão 7.1 do Android, mas quando eu tento rodar o mesmo código no emulador 4.4, 5.1 ou qualquer outro para testar, o banco não consegue ser acessado! Retorna NullPointer exception, mas como eu disse a primeira aplicação que eu criei funciona muito bem. Eu acho que a tabela só está sendo criada uma única vez em um só aparelho, e quando tento acessar de outro tenho problemas, certo?

Segue o código:

package com.megavirtua.boalista;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;
import java.util.List;

public class DBHandler extends SQLiteOpenHelper {
    
    private static final int VERSAO_BANCO = 1;

    private static final String NOME_BANCO = "banco_configs";
    
    private static final String TABELA_CONFIGS = "configs";

    private static final String KEY_COD = "codigo";
    private static final String KEY_CONFIG = "config";
    private static final String KEY_DESCR_CONFIG = "descr_config";

    public DBHandler(Context context) {
        super(context, NOME_BANCO, null, VERSAO_BANCO);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABELA_CONFIGS + "("
                + KEY_COD + " INTEGER PRIMARY KEY," + KEY_CONFIG + " TEXT,"
                + KEY_DESCR_CONFIG + " TEXT" + ")";
        db.execSQL(CREATE_CONTACTS_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        
        db.execSQL("DROP TABLE IF EXISTS " + TABELA_CONFIGS);
        onCreate(db);
    }


    public void addConfig(DBConfig config) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_CONFIG, config.getConfig()); 
        values.put(KEY_DESCR_CONFIG, config.getDescrConfig()); 

        // Insere linha
        db.insert(TABELA_CONFIGS, null, values);
        db.close(); 
    }


    // Obtem tudo
    public List<DBConfig> getAllConfigs() {
        List<DBConfig> configList = new ArrayList<DBConfig>();

        String selectQuery = "SELECT  * FROM " + TABELA_CONFIGS;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        if (cursor.moveToFirst()) {
            do {
                DBConfig config = new DBConfig();
                config.setCodigo(Integer.parseInt(cursor.getString(0)));
                config.setConfig(cursor.getString(1));
                config.setDescrConfig(cursor.getString(2));

                configList.add(config);
            } while (cursor.moveToNext());
        }


        return configList;
    }


    public List<DBConfig> getConfig(int codigo) {
        List<DBConfig> configList = new ArrayList<DBConfig>();

        String selectQuery = "SELECT  * FROM " + TABELA_CONFIGS + " WHERE codigo=" + codigo;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);


        if (cursor.moveToFirst()) {
            do {
                DBConfig config = new DBConfig();
                config.setCodigo(Integer.parseInt(cursor.getString(0)));
                config.setConfig(cursor.getString(1));
                config.setDescrConfig(cursor.getString(2));

                configList.add(config);
            } while (cursor.moveToNext());
        }


        return configList;
    }


    public void updateConfigEDescricao(int codigo, String config, String descrConfig) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL("UPDATE " + TABELA_CONFIGS + " SET "
                + KEY_CONFIG + "= '" + config + "'," +
                KEY_DESCR_CONFIG + "= '" + descrConfig + "'" +
                " WHERE codigo=" + codigo);
    }

    public void updateConfig(int codigo, String config) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL("UPDATE " + TABELA_CONFIGS + " SET "
                + KEY_CONFIG + "= '" + config + "' " +
                " WHERE codigo=" + codigo);
    }
    
    public boolean deleteConfig(int codigo) {
        SQLiteDatabase db = this.getWritableDatabase();
        return db.delete(TABELA_CONFIGS, KEY_COD + "='" + codigo + "' ;", null) > 0;

    }

}

Responder

Posts

20/04/2017

Eduardo Chaves

Olá , você poderia postar o log de erro completo que ocorre ao tentar criar a tabela ? assim posso verificar qual pode ser a causa do problema.

um abraço
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar