I'm developing the registry for my application, however I'm having an error when registering (insert function), an error that I can not solve, it's in the image:
Classrecord:
privateEditTextUsuário;privateEditTextSenha;privateEditTextCsenha;privateEditTextTelefone;privateEditTextEmail;privateSQLiteDatabaseconexao;privateClienteRepositorioclienteRepositorio;privateDadosOpenHelperdadosOpenHelper;privateRelativeLayoutLayoutRegistro;privateClientecliente;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){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 ClientRepository:
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?