Conexão com banco de dados

Ola pessoal, estou iniciando a programação java com banco de dados propriamente dita e toh com um problema.
Criei minha class ObjetoDAO e nala fiz minha conexão. Segue abaixo:

package br.com.compel.DAO;

import java.sql.*;
import org.postgresql.Driver;

/**
 *
 * @author allyson
 */
public class ObjetoDAO {
    
    private String url;
    private String username;
    private String password;
    
    public ObjetoDAO(){
        
    url = "jdbc:postgresql://localhost:5433/COMPEL";
    username = "postgres";
    password = "lotusnotes";

    try{

        Class.forName("org.postgresql.Driver");
        Connection con = DriverManager.getConnection( url, username, password );
        System.out.println("Conectado com sucesso");
  
    }catch(Exception e){
            e.printStackTrace();
    }

 }


}[/code]

Com esse print, sei q minha conexão esta correta.
Agora estou criando minha classe de insert, mas esta com um problema em abri a conexão. Segue abaixo:

[code]package br.com.compel.DAO;

import br.com.compel.to.Login;
import java.sql.*;

/**
 *
 * @author allyson
 */
public class LoginDAO extends ObjetoDAO {

    private PreparedStatement ps;
    
    public void insertLogin(String login, String senha){

        try{

            String sql = "insert into tb_login(log_nm_login, log_ds_senha)"
                    + "values(" + login + "," + senha +")";
            System.out.println(sql);
            ps.getConnection().prepareStatement(sql);
            System.out.println("teste1");
            ps.executeQuery(sql);
            ps.close();

        }catch(Exception e){
            System.out.println("erro");
        }

    }

    public static void main(String[] args) {

        LoginDAO login = new LoginDAO();
        login.insertLogin("teste", "012");

    }

}

Eu consigo executar ate a linha System.out.println(sql); depois ele cai no catch.
Alguem poderia me ajudar?

Abraços!

kamuiorg, seu código está repleto de problemas.

Sem o stack trace da excessão fica difícil falar o que é, mas dando uma olhada rápida pude ver que seu código está errado e sua query está com a sintaxe errada.

Quanto ao código do seu DAO, vc precisa criar a conexão e a partir dela criar o PreparedStatement.

Quanto a sua query, você está concatenando Strings para inserir os valores da query, mas valores em String devem estar inseridos entre aspas simples ou duplas.

A query deveria estar assim:

String sql = "insert into tb_login(log_nm_login, log_ds_senha)" + "values('" + login + "', '" + senha +"')";

Depois que solidificar o que está aprendendo e corrigir os erros (tanto no código quanto conceituais), sugiro que você aprenda a usar PreparedStatements de forma mais apropriada, ao invés da forma que está fazendo. Com eles você pode inserir parâmetros na query. O código que você postou ficaria assim:

[code]String sql = “insert into tb_login(log_nm_login, log_ds_senha)”
+ “values( ?, ?)”;
ps = suaConexao.prepareStatement(sql);

ps.setString( 1, login );
ps.setString( 2, senha );

ps.executeUpdate();[/code]

[]´s

Você precisa de uma connection factory pra poder te retornar conexoes. Nesse teu código tu registras as conexão e retorna ela pra um objeto que nao faz nada com ele depois.

No material fj-11 ou fj-21 da caelum explica direitinho você trabalhar com jbdc na unha! =)

[]s