Olá pessoal! Tudo bem?
Estou com um problema com o seguinte código:
package criacaoclasseBD;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;public class BD { /<em>Objeto que fará conexão usando o drive</em>/ public Connection con= null; /<em>Sabe executar instruções no SQL</em>/ public PreparedStatement st= null; /<em>Recebe o resultado de uma instrução</em>/ public ResultSet rs = null; /<em>Constante que vai armazenar o endereço do driver usado</em>/ //As duas constantes a seguir são informações que deveriam estar criptografadas em outro local private final String DRIVER = “com.microsoft.sqlserver.jdbc.SQLServerDriver”; private final String BANCO =“empresa”; //endereço de conexão podendo ser web (localweb, domínio, etc) private final String URL = “jdbc:sqlserver://localhost:1433;integratedSecurity=true”;/<em>Autenticação do SQLServer</em>/ private final String LOGIN = “leo”; private final String SENHA = “123456”;/<em>Metodo que se conecta ao banco</em>/ public boolean getConnection() { //Carregar o Driver -> é o processo responsável por fazer a conexão em tempo de execução. try { Class.forName(DRIVER); System.out.println(“Driver carregado”); /<em>drive manager possui um metodo chamado getConnection para obter(caminho, login, senha)</em>/ con = DriverManager.getConnection(URL, LOGIN, SENHA); System.out.println(“Conectou”); return true; } /<em>Tipo do erro variável que guarda a mensagem do erro e os comandos, como no exemplo a baixo</em>/ catch(SQLException erro) { /<em>SQL exception para entender oq deu erro</em>/ System.out.println("Falha na conxão: "+erro.getMessage()); } catch(ClassNotFoundException erro) { System.out.println(erro.getMessage());} return false; /*Aplicação que vai consumir o BD vai saber se deu certo ou não * True em try e false em catch*/} /<em>Encerra conexão iniciada</em>/ public void close() { /<em>RS - ResultSet</em>/ try { if(rs!=null) { rs.close(); } } catch(SQLException erro) {} /*ST - Statement*/ try { if(st!=null) { st.close(); } } catch(SQLException erro) { } /*Con - Connection*/ try { if(con!=null) { con.close(); System.out.println("Desconectou"); } } catch(SQLException erro) { }}
public static void main(String[] args) { //Instancia a classe BD BD bd = new BD(); bd.getConnection(); ///*Executar operação*/ // bd.close();}
}
O problema é o seguinte:
Estou tentando rodar a classe DB para acessar o banco de dados do SQL SERVER 2017, então a gente precisa carregar os drivers que fazem o acesso e depois conectar após ter criado o banco de dados no SQL SERVER e permitido, nas configurações do próprio SQL SERVER, que haja conexão TCP/IP na porta 1433.
Fiz tudo isso ai, tudo bonitinho, tentei conectar com o usuário padrão “sa” no SQL SERVER, deu ruim todas as vezes. O erro gerado foi:
Falha na conxão: Falha na conexão TCP/IP com o host localhost, porta 1433. Erro: “connect timed out. Verifique as propriedades da conexão. Verifique se uma instância do SQL Server está sendo executada no host e se está aceitando conexões TCP/IP na porta. Verifique se as conexões TCP na porta não foram bloqueadas por um firewall.”.
Basicamente, ele não conecta. Meu firewall foi desligado, a porta está aberta, a configuração está ativada, criei um novo usuário chamado “leo” para testar, mas ainda sim, continua sem sucesso.
Meu professor disse que isto poderia se resolvido fazendo o seguinte:
De acordo com a Microsoft, pode haver problema com sua instalação: “Quando você usa autenticação SQL Server, o JDBC Driver exige que SQL Server seja instalado com autenticação SQL Server, que não é o padrão. Verifique se esta opção estará incluída quando você instalar ou configurar sua instância do SQL Server.”
O problema é que eu reinstalei com a autenticação mista, mas para a surpresa de todos nós: não funcionou. Acredito que eu tenha feito a reinstalação de maneira errada, mas de verdade, não estou conseguindo resolver o problema.
Acho que forneci informações suficientes e se alguém puder me ajudar ou tiver uma solução diferente para implementar no código java pra autenticar com o windows, isso me ajudaria muito.