Olá! Tudo bem, pessoas?
Estou com o seguinte problema: Minha aplicação possui a table USUARIO em perfeito funcionamento com minha LoginActivity e a DAO correspondente, porém numa segunda activity (CriarItemActivity) e DAO (ItemDAO) tento acrescentar uma nova tabela ao banco e me vem o erro
10-20 18:11:51.029 20286-20286/com.rimaria.apsoo.orcamentaria E/SQLiteLog: (1) no such table: ITEMCAD
10-20 18:11:51.110 20286-20286/com.rimaria.apsoo.orcamentaria E/SQLiteDatabase: Error inserting TAMANHO=2.0 VALOR=3.0 NOME=teste MILI=1.0
android.database.sqlite.SQLiteException: no such table: ITEMCAD (code 1): , while compiling: INSERT INTO ITEMCAD(TAMANHO,VALOR,NOME,MILI) VALUES (?,?,?,?)
…
at com.rimaria.apsoo.orcamentaria.dao.DaoItem.insereItem(DaoItem.java:68)
at com.rimaria.apsoo.orcamentaria.CriarItemActivity$1.onClick(CriarItemActivity.java:45)"
O código do Helper:
public static final String NOME_BD = "APPorcamentaria";
public static final int VERSAO_BD = 1;
private String scriptCreate, scriptDelete;
public DBHelper(Context context, String NOME_BD, int VERSAO_BD, String scriptCreate, String scriptDelete) {
super(context, NOME_BD, null, VERSAO_BD);
this.scriptCreate = scriptCreate;
this.scriptDelete = scriptDelete;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(scriptCreate);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(scriptDelete);
onCreate(db);
}
O código do DAO:
public class DaoItem {
private String scriptSqlCreate = "CREATE TABLE ITEMCAD (ID INTEGER PRIMARY KEY AUTOINCREMENT, NOME VARCHAR(50) not null, MILI real, TAMANHO real not null, VALOR real not null);";
private String scriptSqlDelete = "DROP TABLE IF EXISTS ITEMCAD";
private static final String NOME_TABELA = "ITEMCAD";
private DBHelper dbHelper;
private SQLiteDatabase db;
private String[] getColunasTabUsuario(){
String[] UsuarioColunasTab = new String[]{"ID", "NOME", "MILI", "TAMANHO", "VALOR"};
return UsuarioColunasTab;
}
public DaoItem(Context ctx){
try {
dbHelper = new DBHelper(ctx, DBHelper.NOME_BD, DBHelper.VERSAO_BD, scriptSqlCreate, scriptSqlDelete);
if (db == null){
db = dbHelper.getWritableDatabase();
}
}catch (Exception e){
Log.e("Erro: ", e.getMessage());
}
}
public void close(){
if(db != null){
if(!db.isOpen()){
db.close();
}
}
}
public void dropTable(String TableName){
db.delete(TableName, null, null);
}
public ContentValues contentItem(ModelItem modelItem){
ContentValues values = new ContentValues();
values.put("NOME", modelItem.getItemName());
values.put("MILI", modelItem.getItemMilimetragem());
values.put("TAMANHO", modelItem.getItemTamanho());
values.put("VALOR", modelItem.getItemValor());
return values;
}
public long insereItem(ModelItem novoModelItem){
long id = 0;
try{
ContentValues values = contentItem(novoModelItem);
id = db.insert(NOME_TABELA, null, values);
}catch (Exception e){
Log.e("Erro: ", e.getMessage());
}
return id;
}
O código da Activity:
bSaveItem.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if(etNomeItem.getText().length()==0 || etMilimetragem.getText().length()==0
|| etTamanho.getText().length()==0 || etValor.getText().length()==0){
Toast.makeText(getApplication(),
"Todos os campos sao obrigatorios",
Toast.LENGTH_SHORT).show();
}else{
item.setItemName(etNomeItem.getText().toString());
item.setItemMilimetragem(Double.parseDouble(etMilimetragem.getText().toString()));
item.setItemTamanho(Double.parseDouble(etTamanho.getText().toString()));
item.setItemValor(Double.parseDouble(etValor.getText().toString()));
item.setItemId(objItem.insereItem(item));
Toast.makeText(getApplication(),
"Item cadastrado. " + item.getItemId(),
Toast.LENGTH_SHORT).show();
}
}
});
Espero que possam ajudar, estou a muito tempo tentando encontrar o erro.