Sqlite só acessa o banco em um aparelho.
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:
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; } }
Ramom Ferreira
Curtidas 0
Respostas
Eduardo Chaves
27/03/2017
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
um abraço
GOSTEI 0