Jump to content

verificar se campo já existe na bd mysql


Airamzita

Recommended Posts

Tenho um programa em java com conexão ao mysql e pretendo criar uma colmeia. O que quero fazer é que o jTextField2 seja validado e caso já exista na base de dados mysql, apareça num jOptionPane que aquele nome já existe. Penso que seja com um IF, mas não sei como dizer se o conteúdo da jTextField2 já existe em tal tabela, em tal coluna.

Segue o código onde quero inserir:

try {
	 Class.forName("com.mysql.jdbc.Driver"); //procura uma classe
	 Connection con; //cria variável
	 con = DriverManager.getConnection("jdbc:mysql://localhost:3306/p12","root","");
	 //para inserir na bd
	 String query = "INSERT INTO colmeias (ID, Designacao, Ativa) VALUES (NULL, ?, ?)";
	 PreparedStatement stmt = con.prepareStatement(query); //o comando



	 [ESTE EM BAIXO]
	 stmt.setString(1, jTextField2.getText());



	 jComboBox1.getSelectedItem();
	 String value=jComboBox1.getSelectedItem().toString();
	 stmt.setString(2, value);
	 JOptionPane.showMessageDialog(null, "Nova Colmeia inserida com sucesso!", "Criação de nova colmeia", JOptionPane.INFORMATION_MESSAGE);
	 jTextField2.setText(null); //limpa campo depois de inserir

Tentei algo assim:

if (jTextField2.getText().equals(Designacao)) {

	 JOptionPane.showMessageDialog(null, "Já existe");
	 } else {

Sendo Designacao o nome da coluna que tem os registos. Dá o erro que o campo Designacao na bd é único (como quero que seja), ou seja, o meu IF não faz nada!

Sugestões? 😉

Link to comment
Share on other sites

Podes verificar se a designação já existe antes de guardar para a base de dados.

Fazes um select na bd pela designação, se o resultset não for vazio é porque já existe.

Engenharia de Sistemas Informáticos @ IPCA

"Estou convencido de que cerca de metade do que separa os empreendedores de sucesso daqueles malsucedidos é a pura perseverança." - Steve Jobs

Link to comment
Share on other sites

Olá! Obrigado pela sugestão, no entanto tenho uma dúvida. Como digo que o campo designação tem algo lá dentro?

ResultSet rs;
	 stmt.setString(1, jTextField2.getText());

	 String sql = "SELECT Designacao FROM colmeias";
	 rs = stmt.executeQuery(sql);
     if (rs.equals("")) {											 //meti vazio, mas quero que tenha conteúdo
		 JOptionPane.showMessageDialog(null, "A designação inserida já existe. Por favor, modifique.");
	 } else {

Ou o código nem sequer está correto?

Edited by Airamzita
Link to comment
Share on other sites

ResultSet rs;
	 stmt.setString(1, jTextField2.getText());

	 String sql = "SELECT Designacao FROM colmeias WHERE Designacao LIKE ' "+jTextField2.getText()+" ' "; // Falta a pesquisa pela designação que está no textfield
	 rs = stmt.executeQuery(sql);

boolean existe = false;

while(rs.next()){  //Percorre todas as linhas que forem selecionadas na tabela
   existe = true;    //Se não foi encontrado nenhum resultado para a query, esta linha não é executada. Não chega a entrar no ciclo
   break;    //Para o ciclo 
}
 if (existe) {
		 JOptionPane.showMessageDialog(null, "A designação inserida já existe. Por favor, modifique.");
	 } else {
...

Espero que percebas o que fiz...

Engenharia de Sistemas Informáticos @ IPCA

"Estou convencido de que cerca de metade do que separa os empreendedores de sucesso daqueles malsucedidos é a pura perseverança." - Steve Jobs

Link to comment
Share on other sites

Percebi tudo excepto isto

String sql = "SELECT Designacao FROM colmeias WHERE Designacao LIKE ' "+jTextField2.getText()+" ' "; // Falta a pesquisa pela designação que está no textfield

na parte do comentário, não percebi o que é para adicionar. Corri exatamente como colocaste e continuo a conseguir inserir dados com a mesma designação existente na bd.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.