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:
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
anddelete
to use"CODIGO=?"
. Without the spaces between the=
and the?
– Isac
The field
USUÁRIO
have same accent ? If you have, avoid ALWAYS using accent in table or field name, you may lose your seat.– rbz
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
– Anderson Henrique
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 ...
– Leandro Santos