Página Inicial do Fórum > Banco de Dados - JDBC / SQL

Falaha na conexão com o banco de dados!



Criar novo tópico   Responder tópico


  1. samurai
    Posts:309


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Criei o seguinte trecho:


    O estranho é que foi criado o 'alias' no odbc e como aplicação standalone funciona perfeitamente, só no jsp que não. Alguém sabe algo?
    O erro é:

    _________________




  1. daltoncamargo
    Posts:8899


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    O que você quer dizer com aplicação standalone e JSP?

    _________________
    Sugestão de Livros

    -- --




  1. samurai
    Posts:309


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Desculpe, me experssei mau. Na hora de depurar criei um programa, ele acessa a base de dados normalmente com este código que postei, mas quando coloquei isto pra fazer pesquisa em banco de dados em uma base de dados normal deu o erro acima. Se errei nos conceitos e nas definições por favor me corrija.
    _________________




  1. daltoncamargo
    Posts:8899


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    samurai
    Desculpe, me experssei mau. Na hora de depurar criei um programa, ele acessa a base de dados normalmente com este código que postei, mas quando coloquei isto pra fazer pesquisa em banco de dados em uma base de dados normal deu o erro acima. Se errei nos conceitos e nas definições por favor me corrija.


    Desculpa Samuca, mas uma coisa não ficou bem clara para mim..

    Você desenvolveu usando um banco e colocou em testes em outro banco?
    _________________
    Sugestão de Livros

    -- --




  1. samurai
    Posts:309


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Na verdade eu desenvolvi e testei no mesmo banco o access. Mas tá dando este pau. Tava tudo dando certo quando compilava mas foi só por em um página jsp que deu errado. por falar nisso, depois que tudo estiver rodando como portar isto pra oracle?
    _________________




  1. daltoncamargo
    Posts:8899


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    samurai
    Na verdade eu desenvolvi e testei no mesmo banco o access. Mas tá dando este pau. Tava tudo dando certo quando compilava mas foi só por em um página jsp que deu errado. por falar nisso, depois que tudo estiver rodando como portar isto pra oracle?



    Dependendo das selects que você está utizando no access, talvez você não consiga portar com pouco trabalho.
    Coloque o código do seu jsp aqui para analisamos!
    _________________
    Sugestão de Livros

    -- --




  1. samurai
    Posts:309


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Este é o que está ná página qua acessa o banco de dados:

    Isto está na que buca os resulados:

    A que mostra na tela é essa:

    Desde já agradeço!
    _________________




  1. daltoncamargo
    Posts:8899


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44


    Não vi erro nenhum em seu código!
    _________________
    Sugestão de Livros

    -- --




  1. samurai
    Posts:309


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Também não! Os Drivers odbc está correto? o endereço que dei pra base de dados está correta? Devo me matar ou virar um serial killer?
    _________________




  1. daltoncamargo
    Posts:8899


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Tente fazer assim:



    OBS:
    Veja se realmente existe a fonte de dados clientes no seu painel de controle ODBC!
    Teste ela!!
    _________________
    Sugestão de Livros

    -- --




  1. samurai
    Posts:309


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Tem que configurar algo no tomcat?
    _________________




  1. daltoncamargo
    Posts:8899


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Não!
    _________________
    Sugestão de Livros

    -- --




  1. jack_-_ganzha
    Posts:4191


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    samurai



    Segundo esse erro, ele não está encontrando o data source ODBC mesmo. Verifique os codigos a busca de erros simples de digitação. E uma pergunta: depois de testar a conexão numa class stand alone, vc fez alterações no seu dsn?

    valeuz...
    _________________
    Marcos Silva Pereira




  1. samurai
    Posts:309


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Não alterei nada. Pensei que fosse algum pau no odbc então resolvi partir pro mysql. Bom pelo menos aqui os erros são mais claros. Quando tento fazer alguma verificação o erro é que meu driver é inadequado. baixei a ultima versão do driver mysql, coloquei no WEB-INF/lib e mesmo assim da o erro. Troquei 6 por mei dúzia. Vamos por partes, o dsn no accsses está correto, Acho que vou virar um serial-killer, parece mais fácil hahahahahahah!
    _________________




  1. schneider
    Posts:140


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    No caso do MySQL tem que ver o esquema do CLASSPATH, dá uma olhada no post anterior que eu comecei sobre MySQL para ver a missa toda que eu passei para fazer funcionar o bendito....

    Espero que ajude...

    ops:
    _________________
    JavaFree.org




  1. jack_-_ganzha
    Posts:4191


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    O post que o schneider falou é esse:
    http://www.javafree.com.br/forum/viewtopic.php?t=920

    samurai

    Quando tento fazer alguma verificação o erro é que meu driver é inadequado.


    Bom, essa eu nunca vi, deve ser apenas algum problema sobre a localização do arquivo .jar que contem o driver na sua aplicação. É claro, no seu codigo vc altera para funcionar com o mysql agora. A url fica algo como:

    E o nome do driver é:


    Uma dica, para evitar ficar alterando e recompilando seus fontes apenas para mudar o driver do banco de dados, use arquivos de propriedades. Eles funcionam que é uma blz para prover configurações que podem ser facilmente alteradas. Veja o tutorial aqui do JavaFree sobre:
    Utilizando arquivos de Propriedades

    valeuz...
    _________________
    Marcos Silva Pereira




  1. samurai
    Posts:309


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Valeu galera pela força! consegui fazer a conexão e extrair dados com um jsp sem precisar do web.xml! . Fiquei bravo, desinstalei tudo e instalei tudo de novo! . Deu certo com um exemplo de um livro, mas fui portar isto pro meu projeto e quando faz a consulta ele não retorna nada na verdade a página executa até o body.Pensei que fosse porque não tinha dado nenhum na nova base de dados, então resolvi criar uma página pra inserção (devia ser criada mesmo ), mas agora dá um erro que eu não entendo nada:


    O código é:


    _________________




  1. jack_-_ganzha
    Posts:4191


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    samurai


    Vc não está concatenando corretamente a String que forma a conexão. Em determinado momento, vc coloca as aspas simples fora das aspas duplas e daí ocorre o problema. Eu recomendaria que vc usasse uma StringBuffer(calma é tão simples quanto String) para criar todo o comando e depois mandar executa-lo. É algo como:

    Em tempo, vale recomendar usar uma olhada no java.sql.PreparedStatement. Eu acho bem mais interessante quando se está trabalhando com jdbc puro.

    valeuz...
    _________________
    Marcos Silva Pereira




  1. samurai
    Posts:309


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Desculpe marcos, mas não consegui entender a dica que me deu, na verdade não entendi como implementar desta forma que você postou. Pode me dar um exemplo funcional? Desde já agradeço!


    PS.: Tem problema se este assunto se extender muito?
    _________________




  1. daltoncamargo
    Posts:8899


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Dê uma olhada nestes tutoriais Samuca

    http://www.javafree.com.br/home/modules.php?name=Sections&op=listarticles&secid=24

    Principalmente na série "Acessando banco de dados em java"

    []'s
    _________________
    Sugestão de Livros

    -- --




  1. jack_-_ganzha
    Posts:4191


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    samurai
    Desculpe marcos, mas não consegui entender a dica que me deu, na verdade não entendi como implementar desta forma que você postou. Pode me dar um exemplo funcional? Desde já agradeço!


    Bom, eu acho que StringBuffer organiza melhor a criação da sua query SQL. Eu considero melhor do que ficar concatenando de cara uma porção de parametros de uma vez só. Fica mais simples de encontrar erros e tambem fica mais dificil comete-los. Eu encontrei, por exemplo, dois erros no seu codigo SQL e ambos de concatenação, os dois simples e os dois chatos de ver se vc não estiver usando uma IDE. Aproveitando o seu exemplo, daria pra fazer assim:

    Bom, tem gente aqui no forum que vai passar mal depois de ver esse codigo eu o acho horrivel tambem. Uma maneira de melhora-lo um pouco é usando o PreparedStatement (leia a doc para mais detalhes). Considerando que na sua jsp acesso, vc cria um objeto Connection chamado con, ficaria mais ou menos assim:



    samurai

    PS.: Tem problema se este assunto se extender muito?


    Não, não tem. Agora uma dica, leia, mas leia mesmo, as docs das classes e pacotes que vc vai usar e ainda não conhece bem. Na maioria das vezes elas tiram suas duvidas e ainda lhe dão um maior conhecimento sobre o tema. E teste, teste tudo: "como será que isso funciona?! vou testar, alterar, fuçar pra ver". Eu aprendi muito de java e computação assim.

    valeuz...
    _________________
    Marcos Silva Pereira




  1. samurai
    Posts:309


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44



    Aí galera, valeu pela força! Consegui fazer esta firosca funcionar! Graças a ajuda de vocês!
    A propósito vai ter uma caravana do javafree lá no suntechdays?
    _________________




  1. SpiderMan
    Posts:11


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    desculpe me meter nao sei se vou lhe ajudar eu criei uma classe java de conexao com bd nela eu simplesmente mudo o drive para cada banco depois apenas chama sus metodoa ex: conectar, fecharconexao etc.. fica muito mais facil principalmente com access deseja vela




  1. SpiderMan
    Posts:11


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    ai vai a classe bd com conceito o.o que controla tudo sobre a conexao
    package conexao;
    import java.sql.*;

    public class BD {
    private Connection con = null;
    private PreparedStatement prepStmt = null;

    public void conectarAccess() throws Exception
    {
    try {
    String path="C:\\Java\\Eclipse\\workspace\\ProjetoPortaArquivo\\WebContent\\data\\bdProjeto.mdb";
    System.out.println("" + path);
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    con = DriverManager.getConnection("jdbcdbcriver="
    + "{Microsoft Access Driver (*.mdb)};" + "DBQ=" + path, "", "");
    System.out.println("Conectado->" + path);

    } catch (Exception ex) {
    System.out.println(ex.getMessage());
    throw ex;
    }
    }


    /**
    *Método para conectar com banco oracle

    public BD() throws Exception {}

    public void conectarOracle() throws Exception {
    String url = "jdbcracle:thin: "DIGITE_endereço_do_banco";

    String usuario = "DIGITE_Seu_login";
    String senha = "DIGITE_SUA_SENHA";

    try {
    DriverManager.registerDriver(new OracleDriver());
    con = DriverManager.getConnection(url, usuario, senha);

    System.out.println("Nova conexao");
    } catch (Exception e) {
    System.out.println("\n\n Erro ao conectar com o Banco:" + e.getMessage());
    throw e;//sem isto so o servidor ve o usuario nao, ele joga para quem chamou a clase
    }
    }*/


    public void desconectar() throws Exception
    {
    if (con != null) {
    con.close();
    }

    con = null;
    System.out.println("conexao finalizada...");
    }

    public int executeUpdate() throws Exception
    {
    return prepStmt.executeUpdate();
    }

    public ResultSet executeQuery() throws Exception {
    return prepStmt.executeQuery();
    }

    public ResultSet sqlSelect() throws Exception {
    return prepStmt.executeQuery();
    }

    public void prepareStmt(String sql) throws Exception
    {
    prepStmt = con.prepareStatement(sql);
    }

    public PreparedStatement getPrepStmt()
    {
    return prepStmt;
    }

    public void finalize() throws Exception
    {
    this.desconectar();
    }
    }


    E uma classe para uma tabela de meu bd ex:usuario
    package beans;
    import java.sql.ResultSet;
    import conexao.BD;

    public class Usuario
    {
    private int mtUsuario;
    private String nmUsuario;
    private int tpUsuario;
    private String dsSenha;

    public int insere()throws Exception
    {
    String sql;
    int qt;
    sql="Insert into Usuario(mtUsuario,nmUsuario,dsSenha,tpUsuario) values (?,?,?,?)";
    BD bd=new BD();
    bd.conectarAccess();
    bd.prepareStmt(sql);
    bd.getPrepStmt().setInt(1,mtUsuario);
    bd.getPrepStmt().setString(2,nmUsuario);
    bd.getPrepStmt().setString(3,dsSenha);
    bd.getPrepStmt().setInt(4,tpUsuario);
    qt=bd.executeUpdate();
    bd.desconectar();
    return qt;
    }

    public String pesquisaUsuario(int matricula) throws Exception
    {
    String sql,retorno="";
    sql="select * from usuario where mtUsuario="+ matricula;
    BD bd=new BD();
    bd.conectarAccess();
    bd.prepareStmt(sql);
    ResultSet res=bd.sqlSelect();
    retorno="

    ";
    retorno+="<tr>";
    retorno+="<td>Matricula</td><td>Nome</td><td>Tipo Usuario</td>";
    retorno+="</tr>";
    while(res.next())
    {
    retorno+="<tr>";
    retorno+="<td>" + res.getString("mtUsuario") + "</td>";
    retorno+="<td>" + res.getString("nmUsuario") + "</td>";
    switch (res.getInt("tpUsuario"))
    {
    case 1:
    retorno+="<td>Aluno</td>";
    break;
    case 2:
    retorno+="<td>Professor</td>";
    break;
    default:
    retorno+="<td>Não Definido</td>";
    break;
    }
    retorno+="</tr>";
    }
    retorno+="</table>";
    bd.desconectar();
    return retorno;
    }

    public String getDsSenha() {
    return dsSenha;
    }

    public void setDsSenha(String dsSenha) {
    this.dsSenha = dsSenha;
    }

    public int getMtUsuario() {
    return mtUsuario;
    }

    public void setMtUsuario(int mtUsuario) {
    this.mtUsuario = mtUsuario;
    }

    public String getNmUsuario() {
    return nmUsuario;
    }

    public void setNmUsuario(String nmUsuario) {
    this.nmUsuario = nmUsuario;
    }

    public int getTpUsuario() {
    return tpUsuario;
    }

    public void setTpUsuario(int tpUsuario) {
    this.tpUsuario = tpUsuario;
    }
    }




    1. SpiderMan
      Posts:11


      Comment Arrow

      Publicado em: 09/04/2009 23:18:44

      nao sei se seu programa usara classes mas assim funciona perfeitamente




    1. Relacionados





    Novo tópico   Responder tópico     Índice do forum -> Banco de Dados - JDBC / SQL