Conexão BD

Galera, já to enchendo o saco com esses história de BD, né?! Hehehe…

Fiz essas classes pra conexão com BD e tals, mas não tá rolando! Eu acho que tá dando erro na linha que tá como comentário! No SQL Server, eu uso a autenticação do Windows pra conectar ele. Não subi esse BD pra nenhum servidor ainda, mas queria testar ele aqui antes de subir, pq ainda preciso mudar coisas no BD. Eu preciso colocar user="" e pass=""?

[code]package conexao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

     /**
 * 
 * Classe de conexão com BD
 * 
 *
 */

public class ConectaBanco {

public static Connection getConnection() throws SQLException {     
   
	try {     
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");     
           
        // '//TX1410US/SQLEXPRESS' é o que aparece no SQL Server quando eu abro.
        //return DriverManager.getConnection("jdbc:sqlserver://TX1410US/SQLEXPRESS;integratedSecurity=true");     
        } catch (ClassNotFoundException e) {     
        throw new SQLException(e.getMessage());     
        }     
             
    }   

}[/code]

[code]/**
*
* Método para pesquisar todos os clientes no banco de dados
* usando JDBC
*
* @return
*/
public List pesquisarTodos() {

	try {
		
		con = ConectaBanco.getConnection();
		pstm = con.prepareStatement("SELECT * FROM Times);
		
		rs = pstm.executeQuery();
		
		listaTimes = new ArrayList<Times>();
		
		while(rs.next()){
			
			times = new Times();
			times.set_Ds_Time(rs.getString("Ds_Time") );
			listaTimes.add(times);
			
		}
		
	} catch (Exception e) {
		
		e.printStackTrace();
		//faço alguma coisa...
		//não vou colocar nada aqui porque foge do escopo deste artigo
		
	}
	
	return listaTimes;
	
}[/code]

Eu importei o driver de conexão pro projeto, mas quando eu executo esse projeto, ele da o seguinte erro:

[quote]com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host has failed. java.net.UnknownHostException:
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at conexao.ConectaBanco.getConnection(ConectaBanco.java:14)
at services.TimesService.pesquisarTodos(TimesService.java:47)[/quote]

Será que o driver está errado? Eu to usando o SQL Server 2008 r2.

Esse nome “TX1410US” está mapeado no seu arquivo “hosts” ?
Se não tiver, tem que colocar o IP direto ao invés desse nome, tente isso…

Ih!

Agora não sei!

=/

Eu só abro o SQL Server e no Nome do Servidor aparece isso ae!

[quote=claudneto]Ih!

Agora não sei!

=/

Eu só abro o SQL Server e no Nome do Servidor aparece isso ae![/quote]

Então, em todo caso, coloca o IP direto… faz um PING nesse nome aí e vê qual o IP dele, mas deve ser na sua própria máquina… e se quiser, tente olhar no arquivo HOSTS (fica em C:\Windows\System32\drivers\etc ), se existir uma linha pra esse nome, confere se o IP está certo, se não estiver corrija… e se não existir, adicione a linha seguindo os exemplos…

Aeeeee…fui no meuip.com.br e coloquei o IP da minha máquina e foi, porém, agora da outro erro:

[quote]java.sql.SQLException: No suitable driver found for jdbc:sqlserver:201.74.191.64;integratedSecurity=true
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at conexao.ConectaBanco.getConnection(ConectaBanco.java:14)
at services.TimesService.pesquisarTodos(TimesService.java:47)
at executar.Executar.main(Executar.java:21)[/quote]

É erro no driver! Alguém tem esse driver pra me passar? Eu importei o driver pro projeto pelo Build Path, mas parece que o driver está errado!

Ninguém?

Opa!

Dá uma olhada na sua string de conexão, tá errada… a sintaxe é essa:

jdbc:sqlserver://serverName:portNumber;databaseName=DatabaseName;user=UserName;password=Password;

Eu uso a autenticação do Windows no SQL Server. Esse BD ainda não está em nenhum servidor. Eu gostaria de testar a minha aplicação antes de subir pro servidor.

De acordo com o erro, driver que eu coloquei na minha aplicação não é válido.

Alguém sabe onde eu posso achar o driver certo?

Tenta adiciona esse driver na pasta lib em: WEB-INF > lib.

Eu fiz o import dele (sqljdbc.jar) pelo Build Path do projeto. Ele importou todos os arquivos pro projeto.

Não era assim?

Sim vc está correto deve ser feito por ai mas as vezes ele não reconhece e por esse motivo deve ser adicionado manualmente. Já ocorreu isso comigo com MySql, e por isso estou te dizendo isso.

Não tem pasta lib no meu projeto e nem na pasta do Eclipse!

Tem isso no arquivo classpath do meu projeto. Isso não quer dizer que o driver já está no projeto?

Não sei se vou ajudar muito, preguiça, mas você já adicionou o connector do seu BD ao projeto?

Se você não tem esse connector, procure no site do fabricante do seu BD.

Depois adiciona ao seu projeto indo em Build Class Path, add external jars…

Acho que é isso, eu faço isso no Eclipse. Deixa rolar ai, se der erro, você fala.

Aeee…agora funcionou a conexão, mas deu outro erro:

Já liberei essa porta no firewall, mas não funcionou!

[code]package conexao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConectaBanco {

public static Connection getConnection() throws SQLException {     
   
	try {     
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");     
           
        //Eu uso a autenticação do Windows pra acessar meu BD no SQL Server. Não subi o BD pra nenhum servidor ainda!
        return DriverManager.getConnection("jdbc:sqlserver://192.168.0.1:1433;databaseName=Campeonatos;user=;password=;");     
        } catch (ClassNotFoundException e) {     
        throw new SQLException(e.getMessage());     
        }     
             
    }   

}[/code]

[code]package services;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import classes.Times;

import conexao.ConectaBanco;

public class TimesService {

private Connection con;
private PreparedStatement pstm;
private ResultSet rs;

private String sql_pesquisar_todos = "SELECT * FROM Times";
private String sql_salvar = "";
private String sql_excluir = "DELETE FROM Times WHERE Ds_Time = 'Bohemios F.C.'"; //utilizo o nome, pois ainda não estamos utilizando um indice para as colunas

private List<Times> listaTimes;
private Times times;

public void imprimeLista(List<Times> time) {
	
	Times[] times = (Times[]) time.toArray();
	
	for (int i = 0; i < times.length; i++) {
		System.out.println(times[i].get_Ds_Time());
	}
	
}

/**
 * 
 * Método para pesquisar todos os clientes no banco de dados
 * usando JDBC
 * 
 * @return
 */
public List<Times> pesquisarTodos() {
	
	try {
		
		con = ConectaBanco.getConnection();
		pstm = con.prepareStatement(sql_pesquisar_todos);
		
		rs = pstm.executeQuery();
		
		listaTimes = new ArrayList<Times>();
		
		while(rs.next()){
			
			times = new Times();
			times.set_Ds_Time(rs.getString("Ds_Time") );
			listaTimes.add(times);
			
		}
		
	} catch (Exception e) {
		
		e.printStackTrace();
		System.out.println("Não foi possível recuperar todos os registros.");
		
	}
	
	return listaTimes;
	
}

/**
 * 
 * Não é utilizado no arquivo exemplo, no entanto demonstra como seria a inclusão
 * de um cliente em nosso sistema
 * 
 * @param cliente
 */
public void salvar(Times time) {
	
	try {
		
		sql_salvar = "INSERT INTO Times(Ds_Time) VALUES ('" + time.get_Ds_Time() + "')";
		con = ConectaBanco.getConnection();
		pstm = con.prepareStatement(sql_salvar);
		
		pstm.setString(1, time.get_Ds_Time());
		
		pstm.execute();
		pstm.close();
		con.close();
		
	} catch (Exception e) {
		
		e.printStackTrace();
		System.out.println("Não foi possível inserir o registro.");
		
	}
	
	
}

/**
 * 
 * Não é utilizado no arquivo exemplo, no entanto demonstra como seria a exclusão
 * de um cliente em nosso sistema
 * 
 * @param cliente
 */
public void excluir(Times time) {
	
	try {
		
		//abrir conexão e definir o que será executado
		con = ConectaBanco.getConnection();
		pstm = con.prepareStatement(sql_excluir);
		
		//vamos definir qual cliente será excluido
		pstm.setString(1, time.get_Ds_Time());
		
		//vamos executar a operação
		pstm.execute();
		
		//vamos fechar..
		pstm.close();
		con.close();
		
	} catch (Exception e) {
		
		e.printStackTrace();
		System.out.println("Não foi possível excluir o registro");
		
	}
	
}

}
[/code]

Ninguém sabe que erro é esse?

Já liberei essa porta no meu firewall, mas não adianta!

Ao invés de 192.168.0.1, coloque 127.0.0.1…

Caso não conecte mesmo assim, coloque seu usuario e senha na marra ali na string de conexão…

Tá aí um exemplo contendo a conexão no MySQL e no SQLServer.

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package srep.db;

import com.mysql.jdbc.JDBC4CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;

/**
*

  • @author Joyle
    */
    public class ConnectionFactory {

    //Para MySQL
    public static Connection getConnectionMySQL() throws SQLException{
    try{
    Class.forName(“com.mysql.jdbc.Driver”);
    return DriverManager.getConnection(“jdbc:mysql://192.168.3.103:3306/dbteste”, “user”, “123456”);
    }catch(ClassNotFoundException e){
    JOptionPane.showMessageDialog(null, “Não foi possível conectar ao banco.\n\n” + e,“Erro de conexão…”, 0);
    throw new SQLException(e.getMessage());
    }
    }

    //Para SQLServer
    public static Connection getConnectionSQLServer() throws SQLException{
    try{
    Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
    return DriverManager.getConnection(“jdbc:sqlserver://192.168.3.103:1433;databaseName=dbteste”,“user”,“123456”);
    }catch(ClassNotFoundException e){
    JOptionPane.showMessageDialog(null, “Não foi possível conectar ao banco.\n\n” + e,“Erro de conexão…”, 0);
    throw new SQLException(e.getMessage());
    }catch (Exception e){
    throw new SQLException(e.getMessage());
    }
    }

}[/code]

Não funcionou.

O maior problema é que eu uso a autenticação do Windows, portanto não tem login e senha.

Já tentei colocar o usuário e senha do Windows, mas não foi.

[quote=claudneto]Não funcionou.

O maior problema é que eu uso a autenticação do Windows, portanto não tem login e senha.

Já tentei colocar o usuário e senha do Windows, mas não foi.[/quote]

Pois é… aqui sempre usei assim e nunca deu problema.
Também nunca utilizei esse tipo de autenticação.

Tenta configurar normalmente com o usuario e senha do seu BD sem ir pela autenticação do windows. Verifique também se a porta e a database estão corretas.
Mas qual o erro que ele está lançando? posta o erro pra gente ver.

Dá uma olhada em alguns tutoriais do hibernate e tenta usar ele no seu projeto também.

[color=red][quote]com.microsoft.sqlserver.jdbc.SQLServerException: Falha na conexão TCP/IP com o host 189.55.190.4, porta 1433. Erro: “null. Verifique as propriedades da conexão, se uma instância do SQL Server está sendo executada no host e se está aceitando conexões TCP/IP na porta, e verifique se nenhum firewall está bloqueando as conexões TCP na porta.”.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1033)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at conexao.ConectaBanco.getConnection(ConectaBanco.java:14)
at services.TimesService.salvar(TimesService.java:90)
at executar.Executar.main(Executar.java:27)
Exception in thread “main” java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at executar.Executar.main(Executar.java:18)[/quote][/color]