Estou fazendo estágio e na empresa que estou usa um sistema em “FoxPro” apenas para criar relatórios/querys acessando os outros RP’s que a empresa utiliza de fato.
Meu coordenador me deu um tarefa, que é a seguinte:
Fazer uma aplicação “simples”, onde vou apenas fazer a conexão com o banco de dados do ERP, e buscar os dados de uma tabela.
Dai vem a necessidade da ajuda de vocês (se possível, lógico)…
Eu estou pesquisando formas de fazer isso, mas ainda esta bem confuso.
O banco de dados desta aplicação é Oracle.
Sei que vou utilizar os drivers JDBC (eu pelo menos acho), e faze-lo conectar ao banco. Mas estou bem perdido nisso, como iniciar.
Queria um “start”, pois estou vendo nessa tarefa, a oportunidade em aprender e muito e desenvolver melhor o que (pouco) aprendi até agora na faculdade.
Está no caminho certo. Já identificou o banco de dados e a forma de conexão. Procurou algum artigo falando sobre JDBC + ORACLE? Acredito que tenha muito disso na internet e aqui no GUJ.
É isso mesmo mhjmhj2002, vou utilizar o Java pra isso.
Ai vou ter que criar uma interface, ou algo do tipo, pois é uma ideia de descontinuar o que já tem hoje, é uma ferramenta em Visual FoxPro (bem antiga neh), e começar um desenvolvimento em java.
Nem meu coordenador, nem a outra “programadora” que trabalha aqui no TI tem conhecimentos em java, mas como eu ainda estudo e comecei a ver esta linguagem, estou vendo uma boa oportunidade em ganhar experiência, e torcer pra dar tudo certo.
E wbdsjunior, obrigado pela apostila, pois uma das intenções deste projeto, é que ele seja Web. Dai, toda e qualquer ajuda vindo de vocês que já tem mais experiência, pra mim é bem vinda demais.
Mas queria, se não for pedir demais, uma ajuda pra iniciar.
Já estou em mãos, com o usuário e senha do banco de dados que quero conectar, e queria pegar os dados apenas de uma tabela (de início), pra poder jogar em uma tela ou uma tabela, sei lá.
Vocês poderiam de dar uma mão com isso?
Tipo, se eu iria criar uma classe de conexão e outra pra mostrar os dados, realmente, como começar…
Agradeço desde já.
Enquanto isso, estou vendo a apostila da Caelum e os videos pra tentar absorver algumas coisas…
Agora, gostaria da ajuda de vocês, pois nele esta gerando um erro e se eu posso melhorar em algo.
Segue:
Erro:
Não acha o método “getInstace()”;
unreporte exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
cannot find symbol
symbol: method getInstace()
location: class java.lang.Class<capture#554 of ?>
@param args the command line arguments
*/
public static void main(String[] args) {
//Connection con =null;
try{
//Registrando o driver de conexão com o Banco.
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”).getInstance();
//Registrando o driver para estabelecer uma conexão.
Connection con = DriverManager.getConnection("jdbc:odbc:10.1.254.36", "ecorpore", "mega1111");
//Conexão com o banco de dados estabelecida.
//Utilizamos o método createStatement de con para criar o Statement
Statement stm = con.createStatement();
//Executando o comando SQL.
String SQL = "Select seqpessoa, status, fantasia, from ge_pessoa";
//Definido o Statement, a Query será executada no banco de dados
ResultSet rs = stm.executeQuery(SQL);
//O método next() informa se houve resultados e posiciona o cursor do banco
//Na próxima linha disponível para recuperação
//Como esperamos várias linhas utilizamos um laço para recuperar os dados
while(rs.next()){
int seqPessoa = rs.getInt("seqpessoa");
String status = rs.getString("status");
String fantasia = rs.getString("fantasia");
//Imprimindo os resultados retornados pela Query.
System.out.println("SeqPessoa: "+seqPessoa+" Status: "+status+" Fantasia: "+fantasia);
}
}catch(SQLException e){
//Se houve algum erro, uma exceção é gerada para informar o erro.
e.printStackTrace();//Vejamos que erro foi gerado e quem o gerou.
}
}
Editando, modifiquei essa linha, ficando assim agora, pois já havia criado a variável “con” que é do tipo Connection acima.
Veja se é isso, apesar que esta dando erro no “Connection = DriverManager.getConnection(url, username, password);”
“con = DriverManager.getConnection(url, username, password);”
Ainda vou colocar o nome de usuário e senha do bancos, mas isso é detalhe.
@param args the command line arguments
*/
public static void main(String[] args) {
// A captura de exceções SQLException em Java é obrigatória para usarmos JDBC.
// Para termos acesso ao objeto con, ele deve ter um escopo mais amplo que o bloco try
Connection con =null;
String serverName = "10.1.254.36";
String portNumber = "1521";
String sid = "Megafort";
String url = "jdbc:oracle:thin@" + serverName + ":" + portNumber + ":" + sid;
String username = "";
String password = "";
con = DriverManager.getConnection(url, username, password);
//Conexão com o banco de dados estabelecida.
//Utilizamos o método createStatement de con para criar o Statement
Statement stm = con.createStatement();
//Executando o comando SQL.
String SQL = "Select seqpessoa, status, fantasia, from ge_pessoa";
//Definido o Statement, a Query será executada no banco de dados
ResultSet rs = stm.executeQuery(SQL);
//O método next() informa se houve resultados e posiciona o cursor do banco
//Na próxima linha disponível para recuperação
//Como esperamos várias linhas utilizamos um laço para recuperar os dados
while(rs.next()){
// Os métodos getXXX recuperam os dados de acordo com o tipo SQL do dado:
int seqPessoa = rs.getInt("seqpessoa");
String status = rs.getString("status");
String fantasia = rs.getString("fantasia");
//Imprimindo os resultados retornados pela Query.
System.out.println("SeqPessoa: "+seqPessoa+" Status: "+status+" Fantasia: "+fantasia);
}
}catch(ClassNotFoundException e){
//Se houve algum erro, uma exceção é gerada para informar o erro.
e.printStackTrace();//Vejamos que erro foi gerado e quem o gerou.
}catch(SQLException e){
e.printStackTrace();
}
finally{
try{
con.close();
}catch(SQLException onConClose){
System.out.println(“Houve um erro ao fechar a conexão com o Banco de Dados”);
jeancarlosaps
Dei uma ajeitada no seu código é só copiar e colar.
Não esqueça que você tem que importar o driver do oracle pro seu projeto.
Estou contando que vc sab o nome do usuário do banco, a senha a porta etc. E também que existe essa tabela no seu banco de dados.
package bancodedados;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
/**
* @param args
* the command line arguments
*/
public static void main(String[] args) {
// A captura de exceções SQLException em Java é obrigatória para usarmos
// JDBC.
// Para termos acesso ao objeto con, ele deve ter um escopo mais amplo
// que o bloco try
Connection con = null;
try {
String driverName = "oracle.jdbc.odbc.JdbcOdbcDriver";
String serverName = "10.1.254.36";
String portNumber = "1521";
String sid = "Megafort";
String url = "jdbc:oracle:thin@" + serverName + ":" + portNumber + ":" + sid;
String username = "SeuUsuarioDoBanco";
String password = "Senha";
Class.forName(driverName);
con = DriverManager.getConnection(url, username, password);
// Conexão com o banco de dados estabelecida.
// Utilizamos o método createStatement de con para criar o Statement
String SQL = "select * from ge_pessoa";
Statement stm = con.createStatement();
stm.execute(SQL);
// Executando o comando SQL.
// Definido o Statement, a Query será executada no banco de dados
ResultSet rs = stm.executeQuery(SQL);
// O método next() informa se houve resultados e posiciona o cursor
// do banco
// Na próxima linha disponível para recuperação
// Como esperamos várias linhas utilizamos um laço para recuperar os
// dados
while (rs.next()) {
// Os métodos getXXX recuperam os dados de acordo com o tipo SQL
// do dado:
int seqPessoa = rs.getInt("seqpessoa");
String status = rs.getString("status");
String fantasia = rs.getString("fantasia");
// Imprimindo os resultados retornados pela Query.
System.out.println("SeqPessoa: " + seqPessoa + " Status: "
+ status + " Fantasia: " + fantasia);
}
} catch (ClassNotFoundException e) {
// Se houve algum erro, uma exceção é gerada para informar o erro.
e.printStackTrace();// Vejamos que erro foi gerado e quem o gerou.
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
con.close();
} catch (SQLException onConClose) {
System.out
.println("Houve um erro ao fechar a conexão com o Banco de Dados");
onConClose.printStackTrace();
}
}
}
}
Eu preferi não copiar pra tentar entender o que você modificou e vi que você colocou o stm.execute(SQL) que eu não havia colocado e moveu algumas linhas para outros locais.
Dai, eu modifiquei a linha String driverName = "oracle.jdbc.odbc.JdbcOdbcDriver"; para:
@param args the command line arguments
*/
public static void main(String[] args) {
// A captura de exceções SQLException em Java é obrigatória para usarmos JDBC.
// Para termos acesso ao objeto con, ele deve ter um escopo mais amplo que o bloco try
Connection con =null;
Class.forName(driverName);
con = DriverManager.getConnection(url, username, password);
//Conexão com o banco de dados estabelecida.
//Utilizamos o método createStatement de con para criar o Statement
String SQL = "Select * from ge_pessoa";
Statement stm = con.createStatement();
stm.execute(SQL);
//Executando o comando SQL.
//Definido o Statement, a Query será executada no banco de dados
ResultSet rs = stm.executeQuery(SQL);
//O método next() informa se houve resultados e posiciona o cursor do banco
//Na próxima linha disponível para recuperação
//Como esperamos várias linhas utilizamos um laço para recuperar os dados
while(rs.next()){
// Os métodos getXXX recuperam os dados de acordo com o tipo SQL do dado:
int seqPessoa = rs.getInt("seqpessoa");
String status = rs.getString("status");
String fantasia = rs.getString("fantasia");
//Imprimindo os resultados retornados pela Query.
System.out.println("SeqPessoa: " + seqPessoa + " Status: "
+ status + " Fantasia: " + fantasia);
}
}catch(ClassNotFoundException e){
//Se houve algum erro, uma exceção é gerada para informar o erro.
e.printStackTrace();//Vejamos que erro foi gerado e quem o gerou.
}catch(SQLException e){
e.printStackTrace();
}
finally{
try{
con.close();
}catch(SQLException onConClose){
System.out.println(“Houve um erro ao fechar a conexão com o Banco de Dados”);
onConClose.printStackTrace();
}
}
}
}
[/code]
Erros:
run:
java.sql.SQLException: No suitable driver found for jdbc:oracle:thin@10.1.254.36:1521:Megafort
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at bancodedados.Main.main(Main.java:33)
Exception in thread "main" java.lang.NullPointerException
at bancodedados.Main.main(Main.java:66)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
[quote=ttelsen]jeancarlosaps
Dei uma ajeitada no seu código é só copiar e colar.
Não esqueça que você tem que importar o driver do oracle pro seu projeto.
Estou contando que vc sab o nome do usuário do banco, a senha a porta etc. E também que existe essa tabela no seu banco de dados.
/**
* @param args
* the command line arguments
*/
public static void main(String[] args) {
// A captura de exceções SQLException em Java é obrigatória para usarmos
// JDBC.
// Para termos acesso ao objeto con, ele deve ter um escopo mais amplo
// que o bloco try
Connection con = null;
try {
String driverName = "oracle.jdbc.odbc.JdbcOdbcDriver";
String serverName = "10.1.254.36";
String portNumber = "1521";
String sid = "Megafort";
String url = "jdbc:oracle:thin@" + serverName + ":" + portNumber + ":" + sid;
String username = "SeuUsuarioDoBanco";
String password = "Senha";
Class.forName(driverName);
con = DriverManager.getConnection(url, username, password);
// Conexão com o banco de dados estabelecida.
// Utilizamos o método createStatement de con para criar o Statement
String SQL = "select * from ge_pessoa";
Statement stm = con.createStatement();
stm.execute(SQL);
// Executando o comando SQL.
// Definido o Statement, a Query será executada no banco de dados
ResultSet rs = stm.executeQuery(SQL);
// O método next() informa se houve resultados e posiciona o cursor
// do banco
// Na próxima linha disponível para recuperação
// Como esperamos várias linhas utilizamos um laço para recuperar os
// dados
while (rs.next()) {
// Os métodos getXXX recuperam os dados de acordo com o tipo SQL
// do dado:
int seqPessoa = rs.getInt("seqpessoa");
String status = rs.getString("status");
String fantasia = rs.getString("fantasia");
// Imprimindo os resultados retornados pela Query.
System.out.println("SeqPessoa: " + seqPessoa + " Status: "
+ status + " Fantasia: " + fantasia);
}
} catch (ClassNotFoundException e) {
// Se houve algum erro, uma exceção é gerada para informar o erro.
e.printStackTrace();// Vejamos que erro foi gerado e quem o gerou.
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
con.close();
} catch (SQLException onConClose) {
System.out
.println("Houve um erro ao fechar a conexão com o Banco de Dados");
onConClose.printStackTrace();
}
}
}
run:
java.sql.SQLException: No suitable driver found for jdbc:oracle:thin@10.1.254.36:1521:Megafort
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at bancodedados.Main.main(Main.java:33)
Exception in thread “main” java.lang.NullPointerException
at bancodedados.Main.main(Main.java:66)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
é justamente referente ao driver que está faltando no seu projeto.
Antes de prosseguir tentando resolver o problema preciso saber se vc está usando alguma IDE (NETBEANS ou ECLIPSE)?
run:
java.sql.SQLException: No suitable driver found for jdbc:oracle:thin@10.1.254.36:1521:Megafort
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at bancodedados.Main.main(Main.java:33)
Exception in thread “main” java.lang.NullPointerException
at bancodedados.Main.main(Main.java:66)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
é justamente referente ao driver que está faltando no seu projeto.
Antes de prosseguir tentando resolver o problema preciso saber se vc está usando alguma IDE (NETBEANS ou ECLIPSE)?
[/quote]
run:
java.sql.SQLException: No suitable driver found for jdbc:oracle:thin@10.1.254.36:1521:Megafort
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at bancodedados.Main.main(Main.java:33)
Exception in thread “main” java.lang.NullPointerException
at bancodedados.Main.main(Main.java:66)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
é justamente referente ao driver que está faltando no seu projeto.
Antes de prosseguir tentando resolver o problema preciso saber se vc está usando alguma IDE (NETBEANS ou ECLIPSE)?
[/quote][/quote]
Jean, todas as conexões Java (conforme você mesmo já concluiu) precisa do JDBC para a conexão. Essa classe: sun.jdbc.odbc.JdbcOdbcDriver está dentro de um .jar que você tem que baixar e usar como conector do seu banco dentro do projeto.
Então cara, eu já até estou neste site ontem possui os drivers.
Já procurei saber aqui na empresa, e a versão do Oracle que temos é a 10.2.0.1.0 e vi sim que tem esse driver, mas como tem várias versões e informações lá, estou um tanto quanto perdido.
A minha versão do JDK é jdk1.6.0_31.
Bom, ainda pesquisando e entrando na parte que vc disse sobre a url, vi alguns exemplos assim e até mudei no meu código e vou te passar os erros:
String driverName = "oracle.jdbc.OracleDriver"; //nesta parte, estava sun.jdbc.odbc.JdbcOdbcDriver
String serverName = "10.1.254.36";
String portNumber = "1521";
String sid = "Megafort";
String url = "jdbc:oracle:thin@ORCL" + serverName + ":" + portNumber + ":" + sid; //E aqui, estava apenas sem o ORCL
String username = "ecorpore";
String password = "mega1111";
Acho que pode ser realmente assim, pois o cara da infra me disse que tem mesmo esse ORCL ( que até então não sei o que é…rsrs)
O erro é o seguinte com essas modificações:
run:
java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at bancodedados.Main.main(Main.java:32)
Exception in thread "main" java.lang.NullPointerException
at bancodedados.Main.main(Main.java:66)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
To gostando disso, pq estou realmente quebrando a cabeça e entendendo o que estou fazendo.
Ah, e onde eu coloco, em que pasta, esse .jar? Na Raiz da pasta do projeto, na SRC,na Test??
Então. como a adriano citou a respeito do class passado se nao for esse que vc está passando tente o “oracle.jdbc.odbc.JdbcOdbcDriver”.
Depois:
Lá em downloads verifique a versão do seu Oracle e baixe corretamente de acordo com seu BD.
E por fim:
Depois de baixado o driver, que é um arquivo .jar vc vai no NetBeans botao direito em cima do seu projeto PROPRIEDADES depois BIBLIOTECAS - Adicionar JAR/pasta e seleciona o .jar do oracle que vc baixou. Com isso vc ja resolve o problema do driver!
Executa e diz pra gente o resultado
Fiz as modificações e não deu em nada. Estou só confuso em qual driver baixar lá do site.
Pelo que vi, o que mais se aproxima é o: ojdbc14.jar (1,569,316 bytes) - classes for use with JDK 1.4 and 1.5, pois não sei dos outros.
@param args the command line arguments
*/
public static void main(String[] args) {
// A captura de exceções SQLException em Java é obrigatória para usarmos JDBC.
// Para termos acesso ao objeto con, ele deve ter um escopo mais amplo que o bloco try
Connection con =null;
Class.forName(driverName);
con = DriverManager.getConnection(url, username, password);
//Conexão com o banco de dados estabelecida.
//Utilizamos o método createStatement de con para criar o Statement
String SQL = "Select * from ge_pessoa";
Statement stm = con.createStatement();
stm.execute(SQL);
//Executando o comando SQL.
//Definido o Statement, a Query será executada no banco de dados
ResultSet rs = stm.executeQuery(SQL);
//O método next() informa se houve resultados e posiciona o cursor do banco
//Na próxima linha disponível para recuperação
//Como esperamos várias linhas utilizamos um laço para recuperar os dados
while(rs.next()){
// Os métodos getXXX recuperam os dados de acordo com o tipo SQL do dado:
int seqPessoa = rs.getInt("seqpessoa");
String status = rs.getString("status");
String fantasia = rs.getString("fantasia");
//Imprimindo os resultados retornados pela Query.
System.out.println("SeqPessoa: " + seqPessoa + " Status: "
+ status + " Fantasia: " + fantasia);
}
}catch(ClassNotFoundException e){
//Se houve algum erro, uma exceção é gerada para informar o erro.
e.printStackTrace();//Vejamos que erro foi gerado e quem o gerou.
}catch(SQLException e){
e.printStackTrace();
}
finally{
try{
con.close();
}catch(SQLException onConClose){
System.out.println(“Houve um erro ao fechar a conexão com o Banco de Dados”);
onConClose.printStackTrace();
}
}
}
}
[/code]
Erro:
run:
java.lang.ClassNotFoundException: oracle.jdbc.odbc.JdbcOdbcDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at bancodedados.Main.main(Main.java:32)
Exception in thread "main" java.lang.NullPointerException
at bancodedados.Main.main(Main.java:66)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
[quote=ttelsen]Então. como a adriano citou a respeito do class passado se nao for esse que vc está passando tente o “oracle.jdbc.odbc.JdbcOdbcDriver”.
Depois:
Lá em downloads verifique a versão do seu Oracle e baixe corretamente de acordo com seu BD.
E por fim:
Depois de baixado o driver, que é um arquivo .jar vc vai no NetBeans botao direito em cima do seu projeto PROPRIEDADES depois BIBLIOTECAS - Adicionar JAR/pasta e seleciona o .jar do oracle que vc baixou. Com isso vc ja resolve o problema do driver!
Executa e diz pra gente o resultado