Conexao no banco no JCreator

Pessoal, eu estou desenvolvendo uma pequena aplicação Java pra uma matéria do meu colégio, é um projeto de gerenciamento de CDs e ele consiste no cadastro e na consulta ao banco de dados. Estou usando o JCreator (que é o único software permitido) com banco de dados Postgres (o banco é livre pra escolher).

Eu sempre conectei com o postgres no NetBeans e nunca tive problema nenhum, mas no JCreator ele simplesmente não conecta, não mostra erro, não mostra nada, e quando eu clico no botão Cadastrar do executável, ele não faz nada, “não reage”. O banco tá ok, já fiz INSERTs diretamente pelo pgAdmin III e funciona legal.

Será que é alguma coisa relacionada ao driver do postgres? No NetBeans, eu tive que adicionar o Driver ao projeto por meio de umas configurações, mas no JCreator não fiz nenhum procedimento parecido, fiz a conexão diretamente pelo código.

O Driver que eu estou usando (ou que pelo menos eu acho que estou usando) é esse: postgresql-9.1-902.jdbc3

Segue aí o codigo

Variáveis

public static Connection con;
public static Connection conecta;
public static Statement stm;

Função de conexao

[code]

public static Connection Conectar()
{
	String url = "jdbc:postgresql://localhost:5432/Rand_Albuns";
	String usuario = "postgres";
    String senha = "123";
    
	try
	{
		Class.forName("org.postgresql.Driver");         
		con = DriverManager.getConnection(url, usuario, senha);
		JOptionPane.showMessageDialog(null,"Conectou");	 
	}
	catch(Exception ex)
	{
		JOptionPane.showMessageDialog(null,"Erro"+ex.getMessage());
	}
	
	return(con);
}[/code]

evento ActionPerformed do botão de cadastrar

if(aevento.getSource() == btSalvar)
		{
			sano = (String)cbAno.getSelectedItem();
			snumfaixas = (String)cbFaixas.getSelectedItem();
			numfaixas = Integer.parseInt(snumfaixas);
			try
    		{
    			conecta = Conectar();
    			if(conecta != null)
    			{
	 				stm = conecta.createStatement();
 					stm.executeUpdate("INSERT into albuns (nome,artista,ano,gravadora,numero_faixas,genero,versao) values ('"+txtAlbum.getText()+"','"+txtCantor.getText()+"','"+sano+"','"+txtGravadora.getText()+"',"+numfaixas+",'"+(String)cbGenero.getSelectedItem()+"','"+(String)cbVersao.getSelectedItem()+"')");    		
    			}
    			else
    			{
    				JOptionPane.showMessageDialog(null,"Conexao sem retorno");
    			}
    		}
    		catch(Exception ex)
    		{
    			JOptionPane.showMessageDialog(null,"Não foi possivel inserir no banco"+ex.getMessage());
    		}
    		return;
		}

Todos os JOptionPanes do código, eles sequer aparecem quando eu executo o programa.
Alguem por favor poderia me ajudar? Eu preciso muito arrumar isso. Por favor! Já agradeço.

.

  1. Adiciona o jar no projeto. (http://jdbc.postgresql.org/documentation/head/index.html)

  2. Tenta colocar um cast (Conneciton) no DriverManager.

  3. Para fazer insert em banco de dados não utiliza concatenação de strings, pois trás alguns pontos negativos, como exemplo o clássico Joana D’arc (SQL Injection).
    Experimente values(?,?,?,?).

Gente, agora funcionou, eu mudei de Statement para PreparedStatement como o lanlico disse, mas depois descobri que o problema de os JOptionPane nem aparecerem era o return(con) do Conectar(), que eu deveria ter colocado dentro do try-catch. Tá, as mensagens começaram a aparecer e eu pude me guiar para ver onde estava o problema. Finalmente pude descobrir que se tratava de um problema de conversao int para String, que nada tinha a ver com a conexão.

Eram dois valores, o ano e o numero de faixas, que eram JComboBox com números inteiros. E mesmo eu colocando no INSERT assim: (String)cmbFaixas.getSelectedItem() o Java não aceitava como String, dai foi só eu converter os valores para String que tudo se resolveu. Muito obrigada gente pela ajuda!