Boas pessoal, estou com um problema relacionado com a inserção de dados através do formulário da aplicação android, quando se clica para enviar os dados para a base de dados surge o erro error code 19 :constraint failed
, realmente não sei como ultrapassar sou iniciante. Abaixo deixo o código
public class ScriptDLL {
public static String getCreateTableReports() {
StringBuilder sql = new StringBuilder();
sql.append("create table if not exists reports( ");
sql.append("idReport integer(4) primary key autoincrement,");
sql.append("descricaoReport text(200) not null, ");
sql.append("nomeFuncionario text(40) not null, ");
sql.append("apelidoFuncionario text(40) not null, ");
sql.append("departamento text(70) not null, ");
sql.append("data text(10) not null, ");
sql.append("hora text(5) not null, ");
sql.append("piso integer);");
return sql.toString();
}
public static String getCreateTableLogin() {
StringBuilder sql = new StringBuilder();
sql.append("create table if not exists login( ");
sql.append("idUser integer primary key autoincrement not null, ");
sql.append("codigoFuncionario integer(10)not null unique, ");
sql.append("usuario varchar(10) not null default(''), ");
sql.append("senha varchar(10) not null default(''), ");
sql.append("foreign key(codigoFuncionario) references funcionario(codigoFuncionario));");
return sql.toString();
}
public static String getCreateTableFuncionario(){
StringBuilder sql = new StringBuilder();
sql.append("create table if not exists funcionario( ");
sql.append("idFuncionario integer primary key autoincrement not null, ");
sql.append("codigoFuncionario varchar(5) unique not null default(''), ");
sql.append("nomeFuncionario varchar(40) not null default(''), ");
sql.append("apelidoFuncionario varchar(40) not null default(''), ");
sql.append("departamento varchar(70) not null default(''), ");
sql.append("reparticao varchar(70) not null default(''), ");
sql.append("cargo varchar(50) not null default(''), ");
sql.append("carreira varchar(50) not null default(''), ");
sql.append("dataRegisto text not null default(''));");
return sql.toString();
}
}
public class ReportActivity extends Activity {
private Button btnReportar;
private EditText txtHora, txtData, txtNome, txtApelido, txtDepartamento, txtPiso, txtProblema;
private ImageButton btnVoltar;
private ReportRepositorio reportRepositorio;
private SQLiteDatabase conexao;
private DadosOpenHelper dadosOpenHelper;
private Report report;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.reportform);
txtHora = (EditText) findViewById(R.id.txtHora);
txtData = (EditText) findViewById(R.id.txtData);
txtNome = (EditText) findViewById(R.id.txtNome);
txtApelido = (EditText) findViewById(R.id.txtApelido);
txtDepartamento = (EditText) findViewById(R.id.txtDepartamento);
txtPiso = (EditText) findViewById(R.id.txtPiso);
txtProblema = (EditText) findViewById(R.id.txtProblema);
btnReportar = (Button) findViewById(R.id.btnReportar);
btnVoltar = (ImageButton) findViewById(R.id.btnVoltar);
voltarMenu();
criarConexao();
report();
confirmar();
}
private void criarConexao() {
try {
dadosOpenHelper = new DadosOpenHelper(this);
conexao = dadosOpenHelper.getWritableDatabase();
Toast.makeText(getApplicationContext(), "Conexão criada com sucesso", Toast.LENGTH_SHORT).show();
reportRepositorio = new ReportRepositorio(conexao);
} catch (SQLException ex) {
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
dlg.setTitle("Aviso!");
dlg.setMessage(ex.getMessage());
dlg.setNeutralButton("Ok", null);
dlg.show();
}
}
private void confirmar() {
report = new Report();
if (validaCampos() == false) {
try {
reportRepositorio.inserirReport(report);
Toast.makeText(getApplicationContext(), "Reportado com sucesso", Toast.LENGTH_SHORT).show();
finish();
} catch (SQLException ex) {
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
dlg.setTitle("Erro");
dlg.setMessage(ex.getMessage());
dlg.setNeutralButton("Ok", null);
dlg.show();
}
}
}
private void report() {
btnReportar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
confirmar();
}
});
}
private boolean validaCampos() {
boolean res = false;
String nome = txtNome.getText().toString();
String apelido = txtApelido.getText().toString();
String departamento = txtDepartamento.getText().toString();
String piso = txtPiso.getText().toString();
String problema = txtProblema.getText().toString();
String hora = txtHora.getText().toString();
String data = txtData.getText().toString();
report.nomeFuncionario = nome;
report.apelidoFuncionario = apelido;
report.departamento = departamento;
report.piso = piso;
report.problema = problema;
report.data = data;
report.hora = hora;
if (res = isCampoVazio(nome)) {
txtNome.requestFocus();
} else
if (res = isCampoVazio(apelido)) {
txtApelido.requestFocus();
} else
if (res = isCampoVazio(departamento)) {
txtDepartamento.requestFocus();
} else
if (res = isCampoVazio(piso)) {
txtPiso.requestFocus();
} else
if (res = isCampoVazio(problema)) {
txtProblema.requestFocus();
}
if (res) {
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
dlg.setTitle("Aviso!");
dlg.setMessage("Há campos vázios. Preencha por favor.");
dlg.setNeutralButton("Ok", null);
dlg.show();
}
return res;
}
private boolean isCampoVazio(String valor) {
boolean resultado = (TextUtils.isEmpty(valor) || valor.trim().isEmpty()); // ira retornar mesmo que tenha dados
// espaco
return resultado;
};
private void voltarMenu() {
btnVoltar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.report_form, menu);
return true;
}
}
public class DadosOpenHelper extends SQLiteOpenHelper {
public DadosOpenHelper(Context context) {
super(context, "reportappBD", null, 1);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) { // será o local onde se irá criar as tabelas da base de dados
db.execSQL(ScriptDLL.getCreateTableFuncionario()); //metodos criados na classe scriptdll
db.execSQL(ScriptDLL.getCreateTableLogin());
db.execSQL(ScriptDLL.getCreateTableReports());
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// local onde irá se realizar
// actualizações da base dados
// TODO Auto-generated method stub
}
}