Conectanto ao DB2 não resolvido

Na minha máquina local eu instalei o DB2 Control Center e configurei o mesmo apontando para um mainframe onde reside o SGBD DB2 e o banco de dados que eu quero acessar. Funciona perfeitamente, tanto é que eu executo o DB2 Command Center e executo querys na boa.

Estou usando o MyEclipseIDE, existe uma perpectiva DB Browser que podemos configurar drivers JDBC para diversos tipos de SGBD e conexões de banco de dados dos mesmos. Já configurei e usei para o MySQL, SQL Server mas para o DB2 estou apanhando.

Pesquisando encontrei um site da IBM que dizia a existência de duas possibilidades para fazer essa conexão:

  1. Instalar o DB2 Connect local (já fiz isso, tanto é que usei o Control Center e o Command Center e ambos funcionaram perfeitamente), criar um ALIAS apontando para o mainframe (já está criado com o mesmo nome do banco de dados, tanto é que usei o Command Center, executei querys e funcionou) e fazer minha aplicação apontar para esse ALIAS local (esse passo eu não sei se estou fazendo certo). Para este último passo, o site disse que eu deveria usar o App Driver para conexão JDBC, estou com dificuldades para encontrar esse driver.

  2. Usar um Net Driver, mas pelo que pesquisei, esse driver foi descontinuado, dando origem ao driver tipo 4, enfim, nesta possibilidade estou perdidinho.

A IBM recomenda a opção 1 como melhor alternativa.

Alguém já passou por isso ou sabe o que devo fazer?

Desde já agradeço,
Caram.:

Olá,
Procure no busca que já existe tópicos relacionados, se vc. não entender retorne.

Cara, para fazer conexão JDBC no DB2, você precisa basicamente dos dois arquivos .jar no seu classpath:
->db2jcc.jar
->db2jcc_license_cisuz.jar

Você encontra os dois dentro do diretorio java de onde foi instalado o DB2.

E no Java você precisa carregar o Driver e conectar no banco

Class.forName("com.ibm.db2.jcc.DB2Driver");
Connecton con = DriverManager.getConnection(url,userId,password);

(Corrigindo, só depois que mandei essa resposta que aprendi para que servia a funcionalidade “citar” do fórum)

[quote=ManchesteR]Cara, para fazer conexão JDBC no DB2, você precisa basicamente dos dois arquivos .jar no seu classpath:
->db2jcc.jar
->db2jcc_license_cisuz.jar

Você encontra os dois dentro do diretorio java de onde foi instalado o DB2.

E no Java você precisa carregar o Driver e conectar no banco

Class.forName("com.ibm.db2.jcc.DB2Driver"); Connecton con = DriverManager.getConnection(url,userId,password); [/quote]
Jair,

Eu não tenho o DB2 instalado na minha máquina. O que foi instalado na minha máquina foi o DB2 Connect e, na pasta de instalação desse programa, eu não encontrei os .jar que vc citou.

Eu quero acessar remotamente um mainframe com DB2 e um determinado banco de dados, já testei e configurei a conexão pelo DB2 Control Center e está funcionando perfeitamente.

Eu baixei o seguinte driver pelo site da IBM: “db2_v9_db2driver_for_jdbc_sqlj.zip”, após extração eu achei os seguintes arquivos .jar:

  1. db2jcc.jar
  2. db2jcc_license_cu.jar

Não encontrei esse “db2jcc_license_cisuz.jar” que você mencionou.

A dúvida que também estou é na URL pois, segundo a IBM, a melhor forma é usar o App Driver seguindo os seguintes passos:

To establish a cross-platform connection to a DB2 Universal Database system, you should configure a local database alias by using DB2 Connect? or the Client Configuration Assistant from the locally installed DB2 UDB system and then use the DB2 Application Driver.

Eu criei o ALIAS através do Client Configuration Assistant e está funcionando perfeitamente.

Sendo assim, fico na dúvida de qual url usar, tipo:

  1. Apontando para o IP do mainframe que tem o DB2 e o banco que quero acessar: “jdbc:db2://<IP do mainframe>:448/ECXDB000”.

  2. Ou apontando minha máquina, afinal, criei o ALIAS: “jdbc:db2://<LOCALHOST>:448/ECXDB000”.

É a primeira vez que estou tentando conectar ao DB2, já usei com MySQL e SQL Server, por isso, peço desculpas se estou falando alguma besteira e, qualquer erro, por favor me corrija.

Obrigado desde já,
Caram.:

Caram,

Eu desconheço a forma de conectar através de ALIAS. Na verdade eu já ouvi falar, mas nunca usei na prática.

A forma que eu postei acima, é a forma que eu trabalho e funciona normalmente.

Você testou com esses dois arquivos .jar que voce pegou? se sim, qual exception gerou?
Você não pode pedir para o pessoal do Mainframe, mandar os arquivos .jar para voce?

Sobre a dúvida da URL, sim, você deve por o IP/host do servidor.

caram_junior ,
Dê uma estudada nesse dois posts há colocações minhas e do ManchesteR quê ira resolver suas dúvidas e, vale a pena serem estudadas com carinho.
http://www.guj.com.br/posts/list/64018.java#338020
http://www.guj.com.br/posts/list/70735.java#371620
sds.

[quote=ManchesteR]Caram,

Eu desconheço a forma de conectar através de ALIAS. Na verdade eu já ouvi falar, mas nunca usei na prática.

A forma que eu postei acima, é a forma que eu trabalho e funciona normalmente.

Você testou com esses dois arquivos .jar que voce pegou? se sim, qual exception gerou?
Você não pode pedir para o pessoal do Mainframe, mandar os arquivos .jar para voce?

Sobre a dúvida da URL, sim, você deve por o IP/host do servidor.[/quote]
Jair,

Beleza, vamos esquecer o ALIAS. :slight_smile:

A princípio não tenho como pedir os arquivos .jar.

Eu fiz inúmeras buscas e não consegui um lugar para baixar o JDBC Type 4, sinceramente não sei se esses dois aquivos .jar que citei nos posts acima são os corretos. Se você souber um lugar para eu baixar o JDBC Type 4 me diga ok?

Tenho o seguinte trecho de código:

[code] String strBancoURL = “jdbc:db2://10.192.224.110:448/ECXDB000”;
String strDriverName = “com.ibm.db2.jcc.DB2Driver”;
Connection cnn;
try{

	     Class.forName(strDriverName);   
	     cnn = DriverManager.getConnection(strBancoURL, strUsuario, strSenha);   
	     System.out.println("Conectado");   
	}   
	catch(ClassNotFoundException cnfe){   
	    System.err.println("Erro no driver");   
	    System.exit(1);   
	}   
	catch(SQLException sqlE){   
		System.err.println("Conexão Recusada! Erro!");   
	    System.err.println("Não conectado");   
	    sqlE.printStackTrace();   
	}[/code]

Gera a seguinte exception:

Conexão Recusada! Erro! Não conectado com.ibm.db2.jcc.c.DisconnectException: [ibm][db2][jcc][t4][2057][11264] O servidor de aplicativo rejeitou o estabelecimento da conexão. Foi feita uma tentativa de acessar um banco de dados, ECXDB000, que não foi localizado. at com.ibm.db2.jcc.b.eb.u(eb.java:1613) at com.ibm.db2.jcc.b.eb.n(eb.java:522) at com.ibm.db2.jcc.b.eb.a(eb.java:329) at com.ibm.db2.jcc.b.eb.a(eb.java:112) at com.ibm.db2.jcc.b.b.f(b.java:1249) at com.ibm.db2.jcc.b.b.b(b.java:1140) at com.ibm.db2.jcc.b.b.s(b.java:924) at com.ibm.db2.jcc.b.b.b(b.java:607) at com.ibm.db2.jcc.b.b.a(b.java:593) at com.ibm.db2.jcc.b.b.&lt;init&gt;(b.java:263) at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:163) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at CopyOfConexaoDb2_2.&lt;init&gt;(CopyOfConexaoDb2_2.java:17) at Principal.main(Principal.java:11)

Diz na exceção que o banco de dados ECXDB000 não foi localizado, no entanto tenho certeza que o mesmo está lá, queria colocar uma imagem que copiei do Control Center do DB2 mas pelo que vi no fórum, a imagem tem que estar num link e não tenho nenhum lugar para hospedar essa imagem. Mas tenho certeza que o banco de dados ECXDB000 está lá pois estou enxergando o mesmo pelo Control Center do DB2, assim como executo querys pelo Command Center.

Muito grato desde já pela ajuda.

Abraço,
Caram.:

[quote=WilliamSilva]caram_junior ,
Dê uma estudada nesse dois posts há colocações minhas e do ManchesteR quê ira resolver suas dúvidas e, vale a pena serem estudadas com carinho.
http://www.guj.com.br/posts/list/64018.java#338020
http://www.guj.com.br/posts/list/70735.java#371620
sds.[/quote]
William,

Dei uma estudada, até peguei trechos de código nos posts. Estudei com carinho mas continuo com problema. O problema está no post acima em resposta ao Jair.

Obrigado pela ajuda.

Abraços,
Caram.:

Estou começando a ficar desesperado! :open_mouth:

[quote]jdbc:db2://10.192.224.110:448/ECXDB000"[/quote]A sua porta de conexão é a “448” ??? geralmente são xxxx == porta 5000 p/ baixa plataforma…

[quote]
Dei uma estudada, até peguei trechos de código nos posts. Estudei com carinho mas continuo com problema. O problema está no post acima em resposta ao Jair.
[/quote]Pode ser mais claro…???
Use esse plugin…:
http://eclipsesql.sourceforge.net/