Error saving data to Database

Asked

Viewed 29 times

0

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;

public class DBHelper extends SQLiteOpenHelper {

    private static final int VERSAO_BANCO = 1;
    private static final String NOME_BANCO = "CONTROLE_DE_ESTOQUE";
    private static final String TABELA_PRODUTOS = "produtos";
    private static final String ID = "_id";
    private static final String DESCRICAO = "descricao";
    private static final String CATEGORIA = "categoria";
    private static final String UNIDADEMEDIDA = "unidadeMedida";
    private static final String ESTOQUE_ATUAL = "estoqueAtual";
    private static final String ESTOQUE_MINIMO = "estoqueMinimo";
    private static final String VALOR_CUSTO = "valorCusto";
    private static final String VALOR_VENDA = "valorVenda";
    private static final String[] COLUNAS = {TABELA_PRODUTOS};


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

    @Override
    public void onCreate(SQLiteDatabase db) {

        String QUERY_USUARIO = "CREATE TABLE TABELA_USUARIOS (_ID integer primary key autoincrement, nomeUsuario TEXT, senha TEXT);";
        db.execSQL(QUERY_USUARIO);

        String QUERY_PRODUTO = "CREATE TABLE TABELA_PRODUTOS (_ID integer primary key autoincrement, descricao TEXT, categoria TEXT," +
                " unidadeMedida TEXT, valorCusto TEXT, valorVenda TEXT, estoqueAtual TEXT, estoqueMinimo TEXT);";
        db.execSQL(QUERY_PRODUTO);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        db.execSQL("DROP TABLE IF EXISTS TABELA_USUARIOS;");
        onCreate(db);

    }

    public long CriarUsuario(String nomeUsuario, String senha) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("nomeusuario", nomeUsuario);
        cv.put("senha", senha);
        long result = db.insert("TABELA_USUARIOS", null, cv);
        return result;
    }

    public String ValidarUsuario(String nomeUsuario, String senha) {
        SQLiteDatabase db = getReadableDatabase();
        Cursor c = db.rawQuery("SELECT * FROM TABELA_USUARIOS WHERE nomeUsuario=? AND senha=?", new String[]{nomeUsuario, senha});
        if (c.getCount() > 0) {
            return "OK";
        }
        return "ERRO";
    }

    public long CriarProduto(Produto produto) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(DESCRICAO, produto.getDescricao());
        cv.put(CATEGORIA, produto.getCategoria());
        cv.put(UNIDADEMEDIDA, produto.getUnidadeMedida());
        cv.put(ESTOQUE_ATUAL, produto.getEstoqueAtual());
        cv.put(ESTOQUE_MINIMO, produto.getEstoqueMinimo());
        cv.put(VALOR_CUSTO, produto.getValorCusto());
        cv.put(VALOR_VENDA, produto.getValorVenda());

        long result = db.insert("TABELA_PRODUTOS", null, cv);
        return result;
    }

    public Produto getProduto(int id) {
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.query(TABELA_PRODUTOS, // a. tabela
                COLUNAS, // b. colunas
                " id = ?", // c. colunas para comparar
                new String[] { String.valueOf(id) }, // d. parâmetros
                null, // e. group by
                null, // f. having
                null, // g. order by
                null); // h. limit
        if (cursor == null) {
            return null;
        } else {
            cursor.moveToFirst();
            Produto produto = cursorToProduto(cursor);
            return produto;
        }
    }

    private Produto cursorToProduto(Cursor cursor) {
        Produto produto = new Produto();
        produto.setId(Integer.parseInt(cursor.getString(0)));
        produto.setDescricao(cursor.getString(1));
        produto.setCategoria(cursor.getString(2));
        produto.setUnidadeMedida(cursor.getString(3));
        produto.setValorCusto(Integer.parseInt(cursor.getString(4)));
        produto.setEstoqueAtual(Integer.parseInt(cursor.getString(5)));
        return produto;
    }

    public ArrayList<Produto> getAllProdutos() {
        ArrayList<Produto> listaProdutos = new ArrayList<Produto>();
        String query = "SELECT * FROM " + TABELA_PRODUTOS;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(query, null);
        if (cursor.moveToFirst()) {
            do {
                Produto produto = cursorToProduto(cursor);
                listaProdutos.add(produto);
            } while (cursor.moveToNext());
        }
        return listaProdutos;
    }

    public int updateProduto(Produto produto) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(DESCRICAO, produto.getDescricao());
        cv.put(CATEGORIA, produto.getCategoria());
        cv.put(UNIDADEMEDIDA, produto.getUnidadeMedida());
        cv.put(ESTOQUE_ATUAL, produto.getEstoqueAtual());
        cv.put(ESTOQUE_MINIMO, produto.getEstoqueMinimo());
        cv.put(VALOR_CUSTO, produto.getValorCusto());
        cv.put(VALOR_VENDA, produto.getValorVenda());
        int i = db.update(TABELA_PRODUTOS, //tabela
                cv, // valores
                ID+" = ?", // colunas para comparar
                new String[] { String.valueOf(produto.getId()) }); //parâmetros
        db.close();
        return i; // número de linhas modificadas
    }

    public int deleteAluno(Produto produto) {
        SQLiteDatabase db = this.getWritableDatabase();
        int i = db.delete(TABELA_PRODUTOS, //tabela
                ID+" = ?", // colunas para comparar
                new String[] { String.valueOf(produto.getId()) });
        db.close();
        return i; // número de linhas excluídas
    }

This is my Database class.

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;


public class CadastroProduto extends AppCompatActivity {

    Spinner spnFornecedor, spnUMedida;
    EditText edtDescricao, edtCategoria, edtVCusto, edtVVenda, edtEAtual, edtEMinimo;
    Button btnNFornecedor, btnCadastrar02;

    DBHelper db;

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

        db = new DBHelper(this);

        spnFornecedor = (Spinner) findViewById(R.id.spnFornecedor);
        spnUMedida = (Spinner) findViewById(R.id.spnUMedida);

        edtDescricao = (EditText) findViewById(R.id.edtDescricao);
        edtCategoria = (EditText) findViewById(R.id.edtCategoria);
        edtVCusto = (EditText) findViewById(R.id.edtVCusto);
        edtVVenda = (EditText) findViewById(R.id.edtVVenda);
        edtEAtual = (EditText) findViewById(R.id.edtEAtual);
        edtEMinimo = (EditText) findViewById(R.id.edtEMinimo);

        btnNFornecedor = (Button) findViewById(R.id.btnNFornecedor);
        btnCadastrar02 = (Button) findViewById(R.id.btnCadastrar02);

        ArrayAdapter adapterUM = ArrayAdapter.createFromResource (this,R.array.unidade_medida, android.R.layout.simple_spinner_item);
        spnUMedida.setAdapter(adapterUM);

        btnCadastrar02.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Produto produto = new Produto();

                //String fornecedor = spnFornecedor.getSelectedItem().toString();
                /*produto.setUnidadeMedida(spnUMedida.getSelectedItem().toString());
                produto.setDescricao(edtDescricao.getText().toString());
                produto.setCategoria(edtCategoria.getText().toString());
                produto.setValorCusto (Double.parseDouble(edtVCusto.getText().toString()));
                produto.setValorVenda(Double.parseDouble(edtVVenda.getText().toString()));
                produto.setEstoqueAtual(Integer.parseInt(edtEAtual.getText().toString()));
                produto.setEstoqueMinimo(Integer.parseInt(edtEMinimo.getText().toString()));*/
                String unidadeMedida = spnUMedida.getSelectedItem().toString();
                String descricao = edtDescricao.getText().toString();
                String categoria = edtCategoria.getText().toString();
                String valorCusto = edtVCusto.getText().toString();
                String valorVenda = edtVVenda.getText().toString();
                String estoqueAtual = edtEAtual.getText().toString();
                String estoqueMinimo = edtEMinimo.getText().toString();

                if (descricao.equals("") || categoria.equals("") || valorCusto.equals("") || valorVenda.equals("") || estoqueAtual.equals("") || estoqueMinimo.equals("")/*edtDescricao.getText().toString().equals(null) && edtCategoria.getText().toString().equals(null) || edtVCusto.getText().toString().equals(null)
                        || edtVVenda.getText().toString().equals(null) || edtEAtual.getText().toString().equals(null) || edtEMinimo.getText().toString().equals(null)*/) {
                    Toast.makeText(CadastroProduto.this, "Campos não preenchidos, tente novamente", Toast.LENGTH_SHORT).show();
                }

                else {

                    long res = db.CriarProduto(produto);
                    if (res>0){
                        Toast.makeText(CadastroProduto.this, "Produto cadastrado", Toast.LENGTH_SHORT).show();

                        Intent i = new Intent (CadastroProduto.this, Produtos.class);
                        startActivity(i);

                    }else {
                        Toast.makeText(CadastroProduto.this, "Cadastro invalido, tente novamente", Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });
    }

This is the class I’m trying to record the data in the call table TABELA_PRODUTOS, the question is this: the application is even creating the table of products, but is not saving the data inserted in the fields of the registration screen!

1 answer

0

private static final String TABELA_PRODUTOS = "produtos";

in the above row was created the TABELA_PRODUTOS variable with the value "products" probably the created table was "products", but Voce is trying to insert data in table "TABELA_PRODUTOS".

long result = db.insert("TABELA_PRODUTOS", null, cv);

hope that help without the logs has not see where the error occurs

  • Unfortunately it didn’t work out, but thank you.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.