Error entering registration: "No such table" - can anyone help me?

Asked

Viewed 498 times

0

I am developing the registration for my application, but I have an error at the time of registering (insert function), an error that I do not know how to solve, it is in the image:

inserir a descrição da imagem aqui

Registration class:

private EditText Usuário;
private EditText Senha;
private EditText Csenha;
private EditText Telefone;
private EditText Email;
private SQLiteDatabase conexao;
private ClienteRepositorio clienteRepositorio;
private DadosOpenHelper dadosOpenHelper;
private RelativeLayout LayoutRegistro;
private Cliente cliente;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_registro);
    setTitle("Registro");
    Toolbar toolbar = (Toolbar)  findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    Usuário = (EditText)findViewById(R.id.Usuário);
    Senha = (EditText)findViewById(R.id.Senha);
    Csenha = (EditText)findViewById(R.id.CSenha);
    Telefone = (EditText)findViewById(R.id.Telefone);
    Email = (EditText)findViewById(R.id.Email);

    LayoutRegistro =  (RelativeLayout)findViewById(R.id.LayoutRegistro);
    criarConexao();

    Button b1 =(Button)findViewById(R.id.Cancelar);
    Button b2 =(Button)findViewById(R.id.Registrar);
    b1.setOnClickListener(this);
    b2.setOnClickListener(this);

}

private void criarConexao(){
    try{
        dadosOpenHelper = new DadosOpenHelper(this);
        conexao = dadosOpenHelper.getWritableDatabase();
        Snackbar.make(LayoutRegistro, R.string.message_conexao_criada_com_sucesso, Snackbar.LENGTH_SHORT)
        .setAction(R.string.action_ok,null).show();

        clienteRepositorio = new ClienteRepositorio(conexao);

    }catch (SQLException ex){

        AlertDialog.Builder dlg = new AlertDialog.Builder(this);
        dlg.setTitle("Erro");
        dlg.setMessage(ex.getMessage());
        dlg.setNeutralButton(R.string.action_ok,null);
        dlg.show();

    }
}

private void confirmar(){

    cliente = new Cliente();

    if (validaCampos() == false) {

        try {
            clienteRepositorio.inserir(cliente);
            finish();

        } catch (SQLException ex) {

            AlertDialog.Builder dlg = new AlertDialog.Builder(this);
            dlg.setTitle("Erro");
            dlg.setMessage(ex.getMessage());
            dlg.setNeutralButton(R.string.action_ok, null);
            dlg.show();
        }
    }

}


private boolean validaCampos(){

    boolean res = false;

    String usuário  = Usuário.getText().toString();
    String senha    = Senha.getText().toString();
    String csenha   = Csenha.getText().toString();
    String telefone = Telefone.getText().toString();
    String email    = Email.getText().toString();

    cliente.usuário  = usuário;
    cliente.senha    = senha;
    cliente.csenha   = csenha;
    cliente.telefone = telefone;
    cliente.email    = email;

    if (res = isCampoVazio(usuário)){
        Usuário.requestFocus();

    }else if (res = isCampoVazio(senha)){
        Senha.requestFocus();

    }else if (res = isCampoVazio(csenha)){
        Csenha.requestFocus();

    }else if (res = isCampoVazio(telefone)){
        Telefone.requestFocus();

    }else if (res = !isEmailValido(email)){
        Email.requestFocus();

    }if (res){
        AlertDialog.Builder dlg = new AlertDialog.Builder(this);
        dlg.setTitle(R.string.title_aviso);
        dlg.setMessage(R.string.message_campos_invalidos_brancos);
        dlg.setNeutralButton(R.string.lbl_ok,null);
        dlg.show();
    }

    return res;


}

private boolean isCampoVazio(String valor){
    boolean resultado = (TextUtils.isEmpty(valor) || valor.trim().isEmpty());
    return resultado;

}

private boolean isEmailValido(String Email){
    boolean resultado = (!isCampoVazio(Email) && Patterns.EMAIL_ADDRESS.matcher(Email).matches());
    return resultado;
}


public void onClick(View v){
    int id = v.getId();
    switch(v.getId()){
        case R.id.Registrar:
            confirmar();
            break;

        case R.id.Cancelar:
            Toast.makeText(getBaseContext(), "Botao cancelar funcionou", Toast.LENGTH_LONG).show();
            break;

    }

}

Script(from sqlite database):

public static String getCreateTableCliente(){

    StringBuilder sql = new StringBuilder();

    sql.append("CREATE TABLE CLIENTE ( ");
    sql.append("    CODIGO   INTEGER       PRIMARY KEY AUTOINCREMENT,");
    sql.append("    USUÁRIO  VARCHAR (60)  NOT NULL, " );
    sql.append("    SENHA    VARCHAR (255) NOT NULL, ");
    sql.append("    CSENHA   VARCHAR (255) NOT NULL, ");
    sql.append("    TELEFONE VARCHAR (20)  NOT NULL, ");
    sql.append("    EMAIL    VARCHAR (200) NOT NULL); ");

    return sql.toString();

}

class Clienterepositorio:

private SQLiteDatabase conexao;

public ClienteRepositorio(SQLiteDatabase conexao) {
    this.conexao = conexao;
}

public void inserir(Cliente cliente){
    ContentValues contentValues = new ContentValues();
    contentValues.put("USUÁRIO", cliente.usuário);
    contentValues.put("SENHA", cliente.senha);
    contentValues.put("CSENHA", cliente.csenha);
    contentValues.put("TELEFONE", cliente.telefone);
    contentValues.put("EMAIL", cliente.email);

    conexao.insertOrThrow("CLIENTE", null, contentValues);

}

public void excluir(int codigo){

    String[] parametros = new String[1];
    parametros[0] = String.valueOf(codigo);

    conexao.delete("CLIENTE", "CODIGO = ?", parametros);

}

public void alterar(Cliente cliente){
    ContentValues contentValues = new ContentValues();
    contentValues.put("USUÁRIO", cliente.usuário);
    contentValues.put("SENHA", cliente.senha);
    contentValues.put("CSENHA", cliente.csenha);
    contentValues.put("TELEFONE", cliente.telefone);
    contentValues.put("EMAIL", cliente.email);

        String[] parametros = new String[1];
        parametros[0] = String.valueOf(cliente.codigo);

    conexao.update("CLIENTE", contentValues, "CODIGO = ?", parametros);

}

public List<Cliente> buscarTodos(){

    List<Cliente> clientes = new ArrayList<Cliente>();

    StringBuilder sql = new StringBuilder();
    sql.append(" SELECT CODIGO, USUÁRIO, SENHA, CSENHA, TELEFONE, EMAIL ");
    sql.append("   FROM CLIENTE ");

    Cursor resultado = conexao.rawQuery(sql.toString(),null);

    if (resultado.getCount() > 0){
        resultado.moveToFirst();

        do {

            Cliente cli = new Cliente();

            cli.codigo   = resultado.getInt(resultado.getColumnIndexOrThrow("CODIGO"));
            cli.usuário  = resultado.getString(resultado.getColumnIndexOrThrow("USUÁRIO"));
            cli.senha    = resultado.getString(resultado.getColumnIndexOrThrow("SENHA"));
            cli.csenha   = resultado.getString(resultado.getColumnIndexOrThrow("CSENHA"));
            cli.telefone = resultado.getString(resultado.getColumnIndexOrThrow("TELEFONE"));
            cli.email    = resultado.getString(resultado.getColumnIndexOrThrow("EMAIL"));

            clientes.add(cli);

        }while(resultado.moveToNext());
    }

    return clientes;

}

public Cliente BuscarCliente(int codigo){

    Cliente cliente = new Cliente();

    StringBuilder sql = new StringBuilder();
    sql.append("SELECT CODIGO, USUÁRIO, SENHA, CSENHA, TELEFONE, EMAIL");
    sql.append("FROM CLIENTE");
    sql.append("WHERE CODIGO ?");

    String[] parametros = new String[1];
    parametros[0] = String.valueOf(codigo);

    Cursor resultado = conexao.rawQuery(sql.toString(),parametros);

    if (resultado.getCount() > 0){
        resultado.moveToFirst();

        cliente.codigo = resultado.getInt(resultado.getColumnIndexOrThrow("CODIGO"));
        cliente.usuário = resultado.getString(resultado.getColumnIndexOrThrow("USUÁRIO"));
        cliente.senha = resultado.getString(resultado.getColumnIndexOrThrow("SENHA"));
        cliente.csenha = resultado.getString(resultado.getColumnIndexOrThrow("CSENHA"));
        cliente.telefone = resultado.getString(resultado.getColumnIndexOrThrow("TELEFONE"));
        cliente.email = resultado.getString(resultado.getColumnIndexOrThrow("EMAIL"));

        return cliente;
    }

    return null;
}
}

Can someone help me?

  • Try to adjust the methods update and delete to use "CODIGO=?". Without the spaces between the = and the ?

  • 1

    The field USUÁRIO have same accent ? If you have, avoid ALWAYS using accent in table or field name, you may lose your seat.

  • sometimes it may even be what @Raonibz said... never create variables or tables, finally nothing in the programming with accents... and even the cedilla "ç" always send because it can generate many conflicts and as he said may even lose your bank if you need to migrate something

  • I did what you said, I left "CODE=?" I have removed all the accents from the USER fields, but I still maintain, I suspect there is something wrong with Sqlite, but I have the table created in it, look: https://prnt.sc/h2a75k ...

No answers

Browser other questions tagged

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