Importar dados de conexão outra class

22 respostas
A

E ae galera blz

Eu fiz um class de conexão com o seguinte código:

/*
 * Conexao.java
 *
 * Created on 23 de Abril de 2007, 21:18
 */

package conexao;
import java.io.IOException;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 

 public class Conexao {
 	
 	private static String NAME	= "com.mysql.jdbc.Driver";
 	private static String URL	= "jdbc:mysql://localhost/test";
 	private static String LOGIN	= "root";
 	private static String PASS	= "";
 	
 	/**
 	 * 
 	 * @return Conexao.
 	 * @throws SQLException
 	 * @throws IOException
 	 */
 	public static Connection connect() throws SQLException, IOException {
 		
 		Connection con = null;
 		
 		try {
 			Class.forName(NAME);
 			con	= DriverManager.getConnection(URL, LOGIN, PASS);
 		} catch (ClassNotFoundException e) {
 			System.out.print("\nNão foi possível estabelecer conexão com a base de dados.\n");
 			e.printStackTrace();
 			return null;
 		}
 		return con;
 	}
 }

Testei ele em uma jsp e funcionou blz
Agora eu estou tentando fazer o seguinte, eu criei uma outra classe que é uma classe de validação a função dela é receber dados enviados por um form e consultar os dados em um banco para ver se existe (dependendo da resposta do banco ele vai redirecionar para um outro jsp com a resposta de negativo ou positivo), o único problema é que não sei como usar a conexão que eu fiz na classe acima em outra class, sei que tenho que importar mas como devo chamar a conexão, e fazer a consulta? O código de consulta eu sei fazer só não sei usar a conexão que já foi feita na outra classe.
Alguém poderia me explicar?

22 Respostas

C
public class Validar {



  public boolean validarForm(Object form) {


    if(form instanceof SeuObjeto) {
      
       SeuObjeto seuObjeto = (SeuObjeto) form;

       String nome = form.getNome();

       Connection conn  = Conexao.connect();

       PreparedStatement stmt = conn.prepareStatement("select * from tabela where nome = ?");

       stmt.setString(1,nome);

       ResultSet rs = stmt.executeQuery();
            

    }

  }


}
A
E ae blz Eu não entendi o que vc colocou aí, olha na minha classe de consulta cheguei até aqui:
E ae blz, valeu pela força

Então até  eu sei chegar! O problema é que não sei fazer o código que faz a consulta. Olha como ficou a minha classe:
[code]

package validacao;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

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


import conexao.Conexao;

/**
 *
 * @author alexandre
 * @version
 */
public class Interpages extends HttpServlet 
{
   
    Conexao conexao = new Conexao(); 
   
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException 
    {
        
    }
}
[/code]

Eu importei o objeto e setei ele na classe com essa linha [b]Conexao conexao = new Conexao(); [/b] agora preciso aprender como capturar os valores do form e fazer a consulta no banco, ainda não conegui fazer. As variáveis que vem do form são: [b] usuario e senha[/b].
C
//imports

public class Interpages extends HttpServlet
{
   
   
   protected void doPost(HttpServletRequest request, HttpServletResponse response) {
        this.processRequest(request,response);
   }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        String usuario = request.getParameter("usuario"); //seu input text da tela deve ter o mesmo name do passado pelo parâmetro

         String senha = request.getParameter("senha"); //Idem com o de  cima

       Connection conn = Conexao.connect(); //Como o método connect da classe Conexao é static, então poderemos chamá-lo dessa maneira, com  o operador ponto. 

       //Aqui você segue com o código que citei acima, utilizando os objetos PreparedStatement e ResultSet, para poder pegar os dados do banco, depois disso você verificará se o usuário e a senha são válidos.         
    }
}
A

Ea e cara valeu pela força consegui fazer.
Porém agora estou com problemas para capturar o valor de dentro do banco. Olha como ficou minha classe:

/*
 * Interpages.java
 *
 * Created on 30 de Abril de 2007, 18:48
 */

package validacao;

import java.io.*;
import java.net.*;
import java.util.*;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

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

import conexao.Conexao;

/**
 *
 * @author alexandre
 * @version
 */
public class Interpages extends HttpServlet 
{
    
  
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException, SQLException 
    {
        String usuario_logado = null;
        String senha_logado = null;
        
        String senha = request.getParameter("senha");
        String usuario = request.getParameter("usuario");
        
        Connection conn = Conexao.connect(); 
        
        Statement sql = conn.createStatement();
        
        String consulta = "select * from senhadeals where senha='"+senha+"' and usuario='"+usuario+"' limit 1";
        ResultSet rs = sql.executeQuery(consulta);
        
        
        
        while(rs.next())
        {
         
            usuario_logado = rs.getString(1);
            senha_logado = rs.getString(0);
           
        }
        
        request.setAttribute("usuario", usuario_logado);
        RequestDispatcher view = request.getRequestDispatcher("home.jsp");
        view.forward(request, response);
        
    }
    
    
}
Então não consigo enviar o valor dos campos da tabela para o jsp de resultado. Não sei se o erro esta no query de consulta ou no while.

Se eu comento essa parte do código:

[b]

String consulta = select * from senhadeals where senha=’”+senha+"’ and usuario=’"+usuario+"’ limit 1";

ResultSet rs = sql.executeQuery(consulta);
while(rs.next())
    {
     
        usuario_logado = rs.getString(1);
        senha_logado = rs.getString(0);
       
    }

[/b]
e mudo essa :request.setAttribute(“usuario”, usuario_logado); para isso: request.setAttribute(“usuario”, usuario);
Ou seja retiro o valor que deveria vir do banco e coloco apenas o que foi capturado do form ele passa na boa. Logo meu problemas ou esta na consulta ou dentro do while mas não consegui identificar fiz várias alterações mas não funcionou. Onde pode estar o erro?

C

1º: Utilize PreparedStatement e não Statement
2º: Dê um syso* da String consulta para ver como está o SQL montado e vá ao seu banco e execute a query para ver se resulta em algo

  • syso = System.out.println();

Veja se dá certo, aguardo resposta.

A

E ae blz

Então cara consegui arrumar, eu só mudei isso: usuario_logado = rs.getString(1); , e deixei assim: usuario_logado = rs.getString(“nome do campo”);, aí funcionou de boa!
Porém eu vi alguns artigos e disseram que é feio deixar o sql dentro da class. Que o certo seria deixar o sql dentro de um DAO e a class só pegando o resultado. É isso mesmo? ou entendi errado?
Se for isso mesmo, o que é um DAO? e como eu crio um? por exemplo se eu uso p netbeans 5.5 e quando eu crio ujm servlet eu clico com o botão direito no pacote e clico eu new e depois servlet. É assim que se cria um DAO? e como eu crio o sql dentro do DAO para a class pegar os valores?
Agora se eu entendi errado, deixa pra lá

Valeu pela força

C
"alexandremanowar":
Porém eu vi alguns artigos e disseram que é feio deixar o sql dentro da class. Que o certo seria deixar o sql dentro de um DAO e a class só pegando o resultado. É isso mesmo? ou entendi errado?

É isso mesmo.

"alexandremanowar":
Se for isso mesmo, o que é um DAO?

DAO = Data Access Object

O DAO é um design pattern que visa separar a lógica de modelo ou de consulta a base de dados, é uma classe java que herda ou não um DAO mais genérico.

"alexandremanowar":
e como eu crio um?

Criando uma classe normalmente.

"alexandremanowar":
e como eu crio o sql dentro do DAO para a class pegar os valores?

Você tem várias opções para fazer isso:

- Colocando as consultas SQL em Strings ou em StringBuffer/StringBuilder
- Guardando as consultas em arquivos XML
- Utilizando algum framework ORM - Object Relational Mapping (como Hibernate, iBatis, JPA e etc) que ajuda e muito a sua vida em relação a persistência

Como você está começando agora, meu conselho são esses:

- Aprenda primeiro JDBC (é o que você está fazendo agora)
- Leia esse artigo e essa explicação breve sobre MVC. Leia também o artigo sobre camadas do Shoes nesse mesmo link.

Basicamente suas classes irão ficar assim (fazendo no modelo MVC):

View (JSP):

<html>
<head>
<title>Teste</title>
</head>
<body>
<form action="Teste.teste" name="Teste" method="POST">

  Usuário: <input type="text" name="usuario" />
  Senha:   <input type="password" name="senha" />

  <input type="submit" value="Enviar Dados" />
 
</form>
</body>
</html>

Controller (Servlet):

public class SeuServlet extends HttpServlet {

  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response) {

   String usuario = request.getParameter("usuario");
   String senha = request.getParameter("senha");

   Usuario usuario = new Usuario(); //Seu JavaBean
   usuario.setUsuario(usuario);
   usuario.setSenha(senha);
  
   CtrlUsuario ctrlUsuario = new CtrlUsuarioBean(); 

   ctrlUsuario.inserirUsuario(usuario);

  }

}

Interface CtrlUsuario e sua implementação:

public interface CtrlUsuario {

   public void inserirUsuario(Usuario usuario);

}

public class CtrlUsuarioBean implements CtrlUsuario {

   public void inserirUsuario(Usuario usuario) {
      
       UsuarioDAO usuarioDAO = new UsuarioDAO();

       //Tratamentos e/ou validações de senha, nome e etc 

       usuarioDAO.inserir(usuario);
   }
}

Model (UsuarioDAO):

public class UsuarioDAO {

  public void inserir(Usuario usuario) {
     //Todo o código de acesso a dados aqui como citado nos posts acima 
  }

}

Seu web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

  <servlet>
    <display-name>Teste</display-name>
    <servlet-name>Teste</servlet-name>
    <servlet-class>Teste</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>Teste</servlet-name>
	<url-pattern>.teste</url-pattern> <!-- pode ser qualquer nome -->
  </servlet-mapping>

    
    <welcome-file-list>
       	<welcome-file>index.html</welcome-file>
    </welcome-file-list>
   

</web-app>

Bem, acho que é isso.

A

E a e cara blz

Eu li o dois links que vc me mandou e achei muito legal a idéia do MVC é um organização muito boa.
Porém estudando o exemplo que vc deixou fiquei com algumas dúvidas e não consegui fazer um exemplo, acho que não entendi bem a estrutura de montagem.
Minhas dúvidas são as seguintes:

No código Controller eu não entendi para que essa parte:

Usuario usuario = new Usuario(); //Seu JavaBean
   usuario.setUsuario(usuario);
   usuario.setSenha(senha);

Não achei nenhum momento que eu precisaria colocar esses valores dento de um Bean! Eu até criei ele dessa forma:

import java.util.*;
 
 public class Usuario
 {
 	
 	private	String	usuario;
        private String senha; 	
 	
      public String getUsuario()
      {
	return usuario;
      }
 
      public String getSenha()
      {
          return senha;
      } 	
}

Porém ficou parado esse beans não sei se criei certo? E se criei não quando usar?

Esse outra parte do controller:

CtrlUsuario ctrlUsuario = new CtrlUsuarioBean();

   ctrlUsuario.inserirUsuario(usuario);

Essa eu entendi ela envia a informação capturada do browser que são:

String usuario = request.getParameter("usuario");

E envia para o CtrlUsuario, porém ele não deveria enviar os dados de usuário e senha?

Já a Inteface CtrlUsuario eu não entendi muito por exemplo:
Se vc puder me explicar como ela funciona?
A única parte que eu entendi e que ela vai funcionar com o DAO validando os dados mas como não entendi?
Sem querer incomodar cara mas se vc puder me explicar com mais detalhes eu agradeço

Valeu pela força

C

Alexandre,

eu acho melhor você ir com mais calma, eu acho que joguei muita informação pra você. Antes de aprender mais sobre padrões (DAO, MVC e etc), primeiro tente entender o funcionamento, o processo e o andar das coisas aí depois disso você parte para uma coisa superior.

Qualquer outra dúvida é só falar. :joia:

A

E ae cara blz

Então vou te pedir um favor me indica um bom manual onde eu possa aprender esses conceitos e começar a criar, eu só trabalho com o que aprendo aqui no fórum.

Valeu!

C

A Caelum acabou de lançar uma excelente apostila.

A

E ae blz

Então estudei no site da sun um tutorial sobre MVC e entendi o conceito, estudei alguns tutoriais na net sobre DAO, tentei estudar esse que vc me passou mas aqui eu só posso usar o NetBeans e esse tutorial usa o eclipse e tem que instalar uma porrada de plugins, fora que ele usa muitos recursos do eclipse, eu li ele mas não consegui fazer no netbeans, terminei me perdendo.
Eu entendi todo o conceito do DAO, primeiro crio a interface de usuário, depois a interface do DAO e depois crio o DAO aí implemento o DAO nas classes e uso.
Porém ainda não consegui montar um eu mesmo, entendi mas não consigui fazer, acho que li muito material cada um querendo usar um recursos diferente ou plugin.
Estou tentando fazer na mão mas não consegui ainda, preciso de mais uma força, será que vc pode criar um comigo, apenas usando código?
Valeu

C

Posso sim, até onde você conseguiu chegar?

Coloque aqui os códigos…

A

E ae blz

Mancada eu já deveria ter deixado o código.
Vamos lá, a class de conexão ficou igual eu fiz da outra vez:

class de conexão:

/* 
 * Conexao.java 
 * 
 * Created on 23 de Abril de 2007, 21:18 
 */ 

package conexao; 
import java.io.IOException; 
 import java.sql.Connection; 
 import java.sql.DriverManager; 
 import java.sql.SQLException; 
  

 public class Conexao { 
     
    private static String NAME   = "com.mysql.jdbc.Driver"; 
    private static String URL   = "jdbc:mysql://localhost/test"; 
    private static String LOGIN   = "root"; 
    private static String PASS   = ""; 
     
    /** 
     * 
     * @return Conexao. 
     * @throws SQLException 
     * @throws IOException 
     */ 
    public static Connection connect() throws SQLException, IOException { 
        
       Connection con = null; 
        
       try { 
          Class.forName(NAME); 
          con   = DriverManager.getConnection(URL, LOGIN, PASS); 
       } catch (ClassNotFoundException e) { 
          System.out.print("\nNão foi possível estabelecer conexão com a base de dados.\n"); 
          e.printStackTrace(); 
          return null; 
       } 
       return con; 
    } 
 }
 fiz uma class de interface de usuário, não sei se esse é o nome:

class de usuário:

public class User

{

private String usuario, senha;

// No que eu entendi aqui fica vazio sem sets ou gets

}

Aí depois eu crio uma interface para o DAO:

public interface UserDao 
{
   public void save (User user);
   public void delete (User user);
   public List list ();
   public User find (String name);  
}

Eu criei essa interface dessa forma porque acredito que ela fica genérica para outras class que eu criar. Não sei se estou certo, porém se vc puder me explicar melhor a interface, pelo que entendo posso usar ela em outras class.

Agora é dessa parte que me perdi mais! Como usar o DAO com o JDBC? Criei a Interface do DAO que pode ser usada para Salvar, apagar dados ou jagar um consulta em uma lista ou fazer busca no banco com nome específico, mas não consegui conectar o DAO com o JDBC. Estou perto ou estou muito errado? Pelo que entendi se eu criar um DAO genérico é melhor que criar um específico, porque o genérico eu posso usar em várias situações, caso contrário vou ter que criar um DAO para cada situação!
Estou certo? Me explique por favor se estou errado e como faço para completar o programa, preciso aprender isso.

Obrigado

S

Aroveitando o topico

Qual a diferença entre o PreparedStatement e Statement???

Eu sempre usei o Statement

C

“Suelmar”:
Aroveitando o topico

Qual a diferença entre o PreparedStatement e Statement???

Eu sempre usei o Statement

A principal diferença é que o PreparedStatement permite um SQL pré-compilado, você pode setar os parâmetros em tempo de execução.

C

O nome dessa “interface com usuário” é JavaBean ou POJO (Plain Old Java Object).

Em relação à por ou não os métodos acessores (gets e sets), isso já foi uma boa discussão na comunidade, tem gente que gosta de usá-los e tem gente que não, porém a Sun especifica que é uma boa prática utilizá-los.

O seu pensamento está quase correto, porém essa interface só trabalha com o objeto User, então as suas funcionalidades estão relacionadas somente ao objeto User.

O que o pessoal faz por aí é: criam um DAO genérico que contêm toda a lógica de persistência comum a todos os objetos.

Exemplo:

//Bean Usuario

public class Usuario extends Entidade {

  private String login;
  private String senha;
  private String nome;

  //Métodos gets e sets

}

//DAO genérico

public interface GenericDAO {

   public void save (Entidade entidade);
   public void delete (Entidade entidade);
   public List list ();
   public Entidade find (String name);  

}

Dessa maneira, qualquer bean ou sua classe de modelo que herdar de Entidade poderá ser persistida no DAO genérico, porque eu estou generalizando para todos os objetos, e não a somente um objeto (no caso User).

O objetivo do DAO é encapsular toda a sua lógica de acesso a banco de dados (no seu caso o JDBC por exemplo). Então não há nada complicado, tudo o que for relacionado a modelo (SQL, conexões, inserções e etc) você coloca-os em um DAO.

Por exemplo, esse seu código que retorna a conexão, poderia estar incluído em um DAO.

“alexandremanowar”:

Pelo que entendi se eu criar um DAO genérico é melhor que criar um específico, porque o genérico eu posso usar em várias situações, caso contrário vou ter que criar um DAO para cada situação!
Estou certo?

Certíssimo entre aspas, por que as vezes é necessário criar DAOs específicos, dependendo da complexidade da lógica do seu negócio.

A

Ea e blz

Bom cara eu consegui fazer um modelo aqui depois de muito trampo, mas deu certo vou postar o código aqui e por favor avalie ele e me mostre onde eu devo melhorar e se montei certo, afinal esse é o primeiro não deve estar muito bom.

Essa é a jsp que o usuário preenche:

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

    <h1>JSP Page</h1>
    <br/>
        
    <form method="POST" action="Inter.do">
        usuário: <input type="text" name="usuario"><br>
        senha: <input type="password" name="senha"><br>
        <input type="submit" value="Acessar">
    </form>
    
    </body>
</html>

Esse código recebe os dados enviados pelo usuário e envia para class de validação que retorna o valor para ele e se for aprovado é enviado para o DAO que esta com as query:

/*
 * Receptor_usuario.java
 *
 * Created on 22 de Maio de 2007, 21:18
 */

package receptores;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

import Interfaces.Interface_usuario;
import DAO.DAO_usuario;

/**
 *
 * @author alexandre
 * @version
 */
public class Receptor_usuario extends HttpServlet 
{
    
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    private int erro;
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException 
    {
       String usuario = request.getParameter("usuario");
       String senha = request.getParameter("senha");
       
       
       Interface_usuario validar = new Interface_usuario();
       
       //envia os valores para a interface usuário
       validar.getUsuario(usuario); 
       validar.getSenha(senha);
       
       //retorna a aprovação
       erro = validar.setErro();
       
       
       if(erro == 0)//caso erro tenha o valor 0 envia os dados para o DAO
       {
         DAO_usuario sql = new DAO_usuario();
         sql.DAO_dados(usuario,senha);
         
         String logado = sql.setLogado();
         
         request.setAttribute("logado", logado);
         RequestDispatcher view = request.getRequestDispatcher("resultado.jsp");
         view.forward(request, response);
         
       }
       else
       {
           //caso entre aqui é porque os valores não existem no banco
       }
    }
}

Essa é a class de validação:

/*
 * Interface_usuario.java
 *
 * Created on 22 de Maio de 2007, 21:23
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package Interfaces;

/**
 *
 * @author alexandre
 */
public class Interface_usuario 
{
    private int erro;
    /** Creates a new instance of Interface_usuario */
    public Interface_usuario() 
    {
        erro = 0;
    }
    
    public void getUsuario(String G_usuario)
    {
        //aqui faço as validações do campo usuário caso esteja errado erro recebe o valor 1
    }
    
    public void getSenha(String G_senha)
    {
        //aqui faço as validações do campo senha caso esteja errado erro recebe o valor 1
  
    }
    
    public int setErro()
    {
        return erro;
    }
}

Esse é o DAO com a query

/*
 * DAO_usuario.java
 *
 * Created on 22 de Maio de 2007, 21:44
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package DAO;

import java.io.*;
import java.net.*;
import java.util.*;

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

import conexao.Conexao;

/**
 *
 * @author alexandre
 */
public class DAO_usuario 
{
    
    public String usuario;
    public String senha;
    public String consulta;
    public String logado;
    
    public DAO_usuario() 
    {
        
    }
    
    public void DAO_dados(String getUsuario, String getSenha)
    {
       try 
        {
            Connection conn = Conexao.connect(); 
            Statement sql = conn.createStatement();
            
            usuario = getUsuario; 
            senha = getSenha;
       
            consulta = "select * from senhadeals where senha='"+senha+"' and usuario='"+usuario+"' limit 1  ";
       
            ResultSet rs = sql.executeQuery(consulta);
            
            while(rs.next())
            {
                logado = rs.getString("nome");
            }
        } 
        catch (IOException ex) 
        {
            ex.printStackTrace();
        }
        catch (SQLException ex) 
        {
            ex.printStackTrace();
        } 
        
        
       
    }
    
    public String setLogado()
    {
        return logado;
    }
    
    
}

Após o DAO fazer a consulta ele retorna o valor para a class que lhe enviou os dados no caso a class Receptor_usuario. E por sua vez finaliza o programa enviando o resultado para a página resultado.jsp.

Bom foi assim que criei, o q vc acha ficou bom? Devo melhorar alguma coisa?

C

Você está indo no caminho correto, tenho algumas dicas para você.

1 - Utilização dos métodos acessores (gets e sets)

Ao pé da letra get significa obter, então você tem que fazer assim:

//Início da classe 

 private String nome;

 //Outros atributos

 //Métodos gets e sets

 public String getNome() {
 
   return this.nome;

 }

 public void setNome(String nome) {
 
  this.nome = nome;

 }

Note que você está fazendo o contrário.

2 - Utilize PreparedStatement e não Statement

Prefira utilizar o objeto PreparedStatement no lugar de Statement, esse objeto é melhor para trabalhar com SQL.

3 - Evite utilizar o underline

Faça assim mesmo: InterfaceUsuario

A

E ae cara blz!

Cara valeu pela força que vc esta me dando, obrigado mesmo, vou seguir essas dicas que postou acima.
Porém eu gostaria de fazer uma comentário sobre a class DAO, no caso essa:

/* 
 * DAO_usuario.java 
 * 
 * Created on 22 de Maio de 2007, 21:44 
 * 
 * To change this template, choose Tools | Template Manager 
 * and open the template in the editor. 
 */ 

package DAO; 

import java.io.*; 
import java.net.*; 
import java.util.*; 

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

import conexao.Conexao; 

/** 
 * 
 * @author alexandre 
 */ 
public class DAO_usuario 
{ 
    
    public String usuario; 
    public String senha; 
    public String consulta; 
    public String logado; 
    
    public DAO_usuario() 
    { 
        
    } 
    
    public void DAO_dados(String getUsuario, String getSenha) 
    { 
       try 
        { 
            Connection conn = Conexao.connect(); 
            Statement sql = conn.createStatement(); 
            
            usuario = getUsuario; 
            senha = getSenha; 
        
            consulta = "select * from senhadeals where senha='"+senha+"' and usuario='"+usuario+"' limit 1  "; 
        
            ResultSet rs = sql.executeQuery(consulta); 
            
            while(rs.next()) 
            { 
                logado = rs.getString("nome"); 
            } 
        } 
        catch (IOException ex) 
        { 
            ex.printStackTrace(); 
        } 
        catch (SQLException ex) 
        { 
            ex.printStackTrace(); 
        } 
        
        
        
    } 
    
    public String setLogado() 
    { 
        return logado; 
    } 
    
    
}

Eu configurei a conexão dentro desse bloco:

public void DAO_dados(String getUsuario, String getSenha) 
    { 
       try 
        { 
            Connection conn = Conexao.connect(); 
            Statement sql = conn.createStatement(); 
            
            usuario = getUsuario; 
            senha = getSenha; 
        
            consulta = "select * from senhadeals where senha='"+senha+"' and usuario='"+usuario+"' limit 1  "; 
        
            ResultSet rs = sql.executeQuery(consulta); 
            
            while(rs.next()) 
            { 
                logado = rs.getString("nome"); 
            } 
        } 
        catch (IOException ex) 
        { 
            ex.printStackTrace(); 
        } 
        catch (SQLException ex) 
        { 
            ex.printStackTrace(); 
        } 
        
        
        
    }

Nesse caso só posso usar a conexão aói dentro se eu quiser criar um outro bloco dentro dessa classe a conexão não vai funcionar, seria tipo assim:

/* 
 * DAO_usuario.java 
 * 
 * Created on 22 de Maio de 2007, 21:44 
 * 
 * To change this template, choose Tools | Template Manager 
 * and open the template in the editor. 
 */ 

package DAO; 

import java.io.*; 
import java.net.*; 
import java.util.*; 

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

import conexao.Conexao; 

/** 
 * 
 * @author alexandre 
 */ 
public class DAO_usuario 
{ 
    
    public String usuario; 
    public String senha; 
    public String consulta; 
    public String logado; 
    
    public DAO_usuario() 
    { 
        
    } 
    
    public void DAO_dados(String getUsuario, String getSenha) 
    { 
       try 
        { 
            Connection conn = Conexao.connect(); 
            Statement sql = conn.createStatement(); 
            
            usuario = getUsuario; 
            senha = getSenha; 
        
            consulta = "select * from senhadeals where senha='"+senha+"' and usuario='"+usuario+"' limit 1  "; 
        
            ResultSet rs = sql.executeQuery(consulta); 
            
            while(rs.next()) 
            { 
                logado = rs.getString("nome"); 
            } 
        } 
        catch (IOException ex) 
        { 
            ex.printStackTrace(); 
        } 
        catch (SQLException ex) 
        { 
            ex.printStackTrace(); 
        } 
        
        
        
    }

    public void DAO_outros(String getoutros) 
    {
       //aqui ficaria uma outra sql
     }
    
    public String setLogado() 
    { 
        return logado; 
    } 
    
    
}

O certo seria eu fazer essa parte:

try 
        { 
            Connection conn = Conexao.connect(); 
            Statement sql = conn.createStatement(); 
        } 
        catch (IOException ex) 
        { 
            ex.printStackTrace(); 
        } 
        catch (SQLException ex) 
        { 
            ex.printStackTrace(); 
        }

fora dos blocos de forma que ela sirva para o class toda, aí a classe ficaria assim:

/* 
 * DAO_usuario.java 
 * 
 * Created on 22 de Maio de 2007, 21:44 
 * 
 * To change this template, choose Tools | Template Manager 
 * and open the template in the editor. 
 */ 

package DAO; 

import java.io.*; 
import java.net.*; 
import java.util.*; 

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

import conexao.Conexao; 

/** 
 * 
 * @author alexandre 
 */ 
public class DAO_usuario 
{ 
    
    public String usuario; 
    public String senha; 
    public String consulta; 
    public String logado; 
    
    public DAO_usuario() 
    { 
        
    } 
    //em algun lugar ficaria o try com a conexão
    public void DAO_dados(String getUsuario, String getSenha) 
    { 
                   
            usuario = getUsuario; 
            senha = getSenha; 
        
            consulta = "select * from senhadeals where senha='"+senha+"' and usuario='"+usuario+"' limit 1  "; 
        
            ResultSet rs = sql.executeQuery(consulta); 
            
            while(rs.next()) 
            { 
                logado = rs.getString("nome"); 
            } 
                
    }

    public void DAO_outros(String getOutros) 
    {  
      //query sql ficam aqui
    }

    public String setLogado() 
    { 
        return logado; 
    } 
    
    
}

OU seja eu declaro o try com a conexão fora dos blocos e posso usar apenas as query dentro dos blocos.
é possível fazer isso?

Valeu

C

Ah sim… é só você fazer assim:

public Connection getConnection() {

   //Aqui vai todo o código que você obtêm a conexão
}

E nos outros métodos que for utilizála, é só chamá-lo.

A

E ae blz!

Cara estou eu aqui novamente, analisando o q vc me falou e arrumando o meu código me deparei com duas dúvidas:

  1. você falou que estou usando os métodos gets e sets ao contrário que o certo seria esse:
//Início da classe

 private String nome;

 //Outros atributos

 //Métodos gets e sets

 public String getNome() {
 
   return this.nome;

 }

 public void setNome(String nome) {
 
  this.nome = nome;

 }

Se eu fizer só dessa forma, estaria errado?:

/Início da classe

 private String nome;

 //Outros atributos

public void setNome(String nome) 
{
  this.nome = nome;
}
Dessa forma eu apenas uso essa parte: public void setNome(String nome) para receber o valor enviado pela outra class.

Não entendi o porque devo usar essa parte antes?



public String getNome()

{

return this.nome;

}



Não sei se estou certo, pelo que entendi, esse parte public String getNome()  eu uso para receber o valor enviado pela outra class, então envio esse valor para esse pedaço: public void setNome(String nome) .

Se for isso porque dar essa volta e não jogar direto na setNome?
  1. Tentei usar o PreparedStatement ele deve ter sintax diferente de uso do Statement onde eu encontro um tutorial para estudar?
    Valeu mais uma vez!
Criado 30 de abril de 2007
Ultima resposta 28 de mai. de 2007
Respostas 22
Participantes 3