[RESOLVIDO]Conexão

6 respostas
J

Olá pessoal, tenho algumas dúvidas quanto a conexão java com SQL Server 2008.

Sei que existe muito assunto sobre isso na internet, ja recorri a vários, realmente não estou conseguindo.

Mostra um erro:
java.sql.SQLException: Network error IOException: Connection refused: connect

Primeiro quanto ao Class.forName. Qual usar, com que drive?

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Class.forName("net.sourceforge.jtds.jdbc.Driver");

Minha url está abaixo, inseri o http na frente do localhost, e deu erro de sintaxe incorreta:

java.sql.SQLException: The syntax of the connection URL ‘jdbc:jtds:sqlserver:http://localhost:1433/caelum’ is invalid.

A que estou usando.

private String url = "jdbc:jtds:sqlserver://localhost:1433/caelum";

Vi também na internet que deve-se habilitar o protocolo TCP/IP no SQLServer, fiz isso e nada.

Bom se alguém tiver alguma idéia do que pode ser.

Valeu!

6 Respostas

fernandosavio

Não sou expert no assunto…
Mas não tem que ter a extensão do bd, usuario e senha?

J

Então, ja tem.

Usuário e Senha peguei em duas variaveis, ficou assim:

conn = DriverManager.getConnection(url, user, senha);
leorbarbosa

O conceito é o mesmo, não precisa de extensão.

Acho que isso pode ajudar:

package le.dbconexao;

/**
 * Guarda tipos e definições sobre drivers e bancos de dados
 * @author Leo
 */
public class DbTipo
{
  /**
   * Valores válidos: SQLSERVER, FIREBIRD, MYSQL, ORACLE
   * Exemplo de uso: DbTipos.DbDriver dbtype = DbTipos.DbDriver.SQLSERVER;
   */
  public enum TipoDb { SQLSERVER, FIREBIRD, MYSQL, ORACLE };
}



  /**
   * Executa e conexão de acordo com as propriedades definidas
   * @param usuario usuário de acesso
   * @param senha senha de acesso
   * @return retorna uma conexão válida
   */
  public Connection conectarDB(DbTipo.TipoDb tipodb, String usuario, String senha)
  {
    String strCon = "";
    String strDriver = "";
    // Tentativa de se estabelecer a conexão
    try
    {
      switch(tipodb)
      {
        case SQLSERVER:
          strDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
          strCon = "jdbc:microsoft:sqlserver://" + getHostName().toString() + "\\" + getNomeInstancia().toString() + ":" +
            getPorta().toString() + ";DatabaseName=" + getDatabaseName().toString();
          break;

        case FIREBIRD: // Lib full 
          strDriver = "org.firebirdsql.jdbc.FBDriver";
          strCon = "jdbc:firebirdsql:" + getHostName().toString() + "/" + getPorta().toString() + ":" + getDatabaseName().toString();

          break;

        case ORACLE:
          break;

        case MYSQL:
          strDriver = "com.mysql.jdbc.Driver";
          strCon = "jdbc:mysql://" + getHostName().toString() + ":" + getPorta().toString() + "/" + getDatabaseName().toString();
      }
      Class.forName(strDriver).newInstance();
      return DriverManager.getConnection(strCon, usuario, senha);
    }

    catch (Exception ex)
    {
      System.out.println("Falha na conexão:\n\n" + ex.toString());
      ex.printStackTrace();
    }
    return null;
  }

Copia e testa aí!
Posta se tiver + dúvidas…

J

Bom desculpa minha ignorância, mas os métodos, getHostName(), getNomeInstancia(), getDatabaseName() e getPorta, eu crio, não entendi muito bem como ficariam.

Obrigado por ajudar pessoal.

leorbarbosa

Na mesma classe do método de conexão, estes métodos são de leitura e escrita (get/set) dos atributos de mesmo nome:

private int porta;
private String hostName;
private String dataBaseName;

att,

J

Valeu pela ajuda, aparentemente deu certo.

Criado 1 de setembro de 2011
Ultima resposta 2 de set. de 2011
Respostas 6
Participantes 3