Estou fazendo uma aplicação simples para salvar dados no banco . Gostaria que o id fosse conferido antes de ser salvo, mas não sei como fazer isso, posso ter duas strings sql? Qual seria a maneira mais fácil de realizar isto?
publicvoidcadastrar(Usuariouser){Stringsql="insert into usuarios(id,nome, senha) values (?,?,?)";try{PreparedStatementprepara=con.prepareStatement(sql);prepara.setInt(1,user.getId());//aqui gostaria de colocar um select que consultasse o id, //se ele já existisse, colocar a mensagem/*prepara.setString(2,user.getNome());prepara.setString(3,user.getSenha());prepara.execute();prepara.close();}catch(SQLExceptione){e.printStackTrace();}}
publicstaticvoidmain(String[]args)throwsException{Class.forName("org.apache.derby.jdbc.ClientDriver");Connectioncon=DriverManager.getConnection("jdbc:derby://localhost:1527/testDb","name","pass");Statementstmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);StringinsertEmp1="insert into emp values(10,'jay','trainee')";StringinsertEmp2="insert into emp values(11,'jayes','trainee')";StringinsertEmp3="insert into emp values(12,'shail','trainee')";con.setAutoCommit(false);stmt.addBatch(insertEmp1);stmt.addBatch(insertEmp2);stmt.addBatch(insertEmp3);ResultSetrs=stmt.executeQuery("select * from emp");rs.last();System.out.println("rows before batch execution= "+rs.getRow());stmt.executeBatch();con.commit();System.out.println("Batch executed");rs=stmt.executeQuery("select * from emp");rs.last();System.out.println("rows after batch execution = "+rs.getRow());}
Desculpe, não entendi o seu código, mas obrigada!
No caso se no banco o campo é PK precisa fazer a validação ou vai dar exception quando o user tentar cadastrar o mesmo dado?
Jeanderson_Silva
Recomendo ver este aqui, ele lhe ajudará melhor e estará em português
Respondendo sua pergunta, se é uma PK vai dar uma exception sim!