Ligar a BD

5 respostas
L

Boas

Criei uma base de dados em SQl e queria que a minha aplicação consultasse a base de dados que criei .

1 - Ja criei a ligação ODBC para esta base de dados e esta a funcionar.

O que quero agora na minha aplicação é poder colocar num campo de texto o ID do Cliente e atraves de um botão ele levar o ID a base de dados, devolver o nome do cliente correspondente ao ID e coloca-lo num determinado campo de texto.

Vamos supor que a base de dados se chame “sonho” a tabela “clientes” os campos sejam “ID_Cliente” e “Nome_Cliente” e o user e pass da base de dados sao user:Admin Pass: sonhar

os campos de texto para serem colocados os dados sao : para o ID “IDCliente” e para o nome NomeCliente

Qual o codigo exacto para isso funcionar por favor se puderem coloquem tb os imports necessarios.

obrigado desde ja

se precisarem de mais algum dado para competar é so dizer

5 Respostas

E

Cara eu posso te ajudar se vc mudar para JDBC. Resolve o seu problema???

esqueleto

R

qual a sua dificuldade?

L

como mudo para JDBC ? Podes dar me uma dica dos passos ?

eu ja me consegui conectar a uma base de dados em access vejam o codigo :

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;

import java.sql.SQLException;

import java.sql.ResultSet;

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Connection connection = DriverManager.getConnection(“jdbc:odbc:bordereaux”, “admin”, “teste”);

System.out.println("is connection null? " + (connection == null)); 
    System.out.println("is connection closed? " + (connection.isClosed())); 
    
    
    Statement statement = connection.createStatement(); 
    ResultSet resultSet = statement.executeQuery("select id_no, first_name, last_name, age from people"); 
    System.out.println("is resultset null? " + (resultSet == null)); 
    
    while(resultSet.next()) 
    { 
        System.out.println(resultSet.getInt(1) + ":" + resultSet.getString(2) + ":" + resultSet.getString(3) + ":" + resultSet.getInt(4) ); 
    } 
    
    resultSet.close(); 
    statement.close(); 
    connection.close();

quando executo a aplicação ele automaticamente faz a consulta a base de dados e os dados recolhidos segundo a instrução ele coloca no sistema ( System.out.println).

O que queria alterar era o seguinte :

1 - quero que a consulta nao seja feita quando a aplicação arranque mas sim quando eu pressionar num botão da minha aplicação.

2- quero que os dados que sejam devolvidos pela base de dados seja posto num determinado campo de texo da minha aplicação e não na janela DOS como esta configurado.

baseando-se no codigo acima que alterações deverei fazer ?

G

“LuisClaudio”:
como mudo para JDBC ? Podes dar me uma dica dos passos ?

O que queria alterar era o seguinte :

1 - quero que a consulta nao seja feita quando a aplicação arranque mas sim quando eu pressionar num botão da minha aplicação.

2- quero que os dados que sejam devolvidos pela base de dados seja posto num determinado campo de texo da minha aplicação e não na janela DOS como esta configurado.

baseando-se no codigo acima que alterações deverei fazer ?

Primeiro, vc deve adicionar um botão ao seu container e posteriormente criar um actionListener ao mesmo

JButton botao = new JButton ( "Consultar" );

botao.addActionListener ( 
             new ActionListener()
                  {
                      public void actionPerformed ( ActionEvent e )
                            {
                                    consultar(); // método para realizar a consulta
                             }
                    }
            );

Após isso, vc deve o componente que armazenará seu texto.
De uma olha no site da sun na parte de documentação ( http://java.sun.com/j2se/1.5.0/docs/api/ ) sobre a Swing e AWT.

Essas APIs possuem uma vasta quantidade de recursos para q vc possa exibir seu texto, basta escolher a mais conveniente.

Depois de escolhido o componente, eh soh trocar o comando

System.out.println

por

componente.append ( seuTexto )

Onde componente eh o campo que melhor satisfaz sua exigências ( um JTextArea por exemplo ) e o seuTexto seria o conteúdo q retorna no banco de dados.

[]'s

E
como mudo para JDBC ? Podes dar me uma dica dos passos ?

Faz assim q da certo

/*
 * conectaBanco.java
 *
 * Created on 24 of November of 2004, 16:22
 */

/**
 *
 * @author  Henrick
 */
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class ConectaMySql {
    private Connection con;
    private Statement stm;
    private String conDriver;
    private String urlString;
    private String user;
    private String password;
    private String query;
    private Driver d;
    private boolean conectado;
    
    /** Creates a new instance of conectaBanco */
    public ConectaMySql() {
        this.user = "root";
        this.password = "admin";
        this.urlString = "jdbc:mysql://localhost:3306/estacionamento";
        this.conDriver = "org.gjt.mm.mysql.Driver";
        this.conectado= false;
  		
    }     
    
    protected void setConDriver(String drv) {
        conDriver = drv;
    }
     
    protected void setPassword(String password) { 
        this.password = password;
    }

    protected void setUser(String user) {
        this.user = user;
    }

    protected void setUrlString(String url) {
        urlString = url;
    }

    protected String getQuery() {
        return query;
    }
    protected Statement getStatement(){
        try {
           int r = conecta();
           if (r >=0){
               return  this.stm;
           }
           else {
               return  null;
           }
        }
        catch(Exception ee2) {
            return null;
        }
    }
    
    public ResultSet getResultSet(String sql){
        int ret = this.conecta();
        if (ret > -1) {
            try {
               this.query = sql ;
               ResultSet res = this.stm.executeQuery(query);
               return res;
            } 
            catch (SQLException e) {
               return null;
            }        
        }
        else {
            return null;
        }
        
    }

    private int conecta() {
        int ret = 0;  
        try {
           if(! this.conectado) { 
               try{         
	               	Class.forName(this.conDriver) ;
               	}
               	catch(Exception e){
               		System.out.println("Driver não encontrado!" +e);		
               	}
               	try{         
	               	this.con=java.sql.DriverManager.getConnection (urlString, user, password);
               	}
               	catch(Exception e){
               		System.out.println("Banco de Dados não encontrado!" +e);		
               	}
               	
               this.con.setAutoCommit (true);
               this.stm = con.createStatement();
               this.conectado = true;
               
           }
        } 
        catch(Exception ee) {
           query = ee.getMessage();
           ret = -2;
           this.conectado = false;
        } 
        return ret;
    }

    protected int getValor(String select) {
        int ret = this.conecta();
        if (ret > -1) {
            try {
               this.query = select ;
               ResultSet res = this.stm.executeQuery(query);
               res.next();
               ret = res.getInt(1); 
            } 
            catch (SQLException e) {
               ret = -3;
            }        
        }
        return ret;
    }  

    
    protected int getValor(String sql, String[] campos) {
       int ret = conecta();
       if (ret > -1) {
          try {
             this.query = sql;
             ResultSet res = this.stm.executeQuery(this.query);
             if (res.next()) {
                for (int i = 0; i < campos.length; i++) {
                    campos[i] = res.getString(i+1); 
                }
             }
          } 
          catch (SQLException e) {
             ret = -3;
          }        
       }
       return ret;
    }  

    protected int exeQuery(String sql) {
       int ret = conecta();
       if (ret > -1) {
          try {
             this.query = sql;
             ret = this.stm.executeUpdate(this.query);
          } 
          catch (SQLException e) {
             ret = -3;
          }        
       }
       return ret;
    }

    protected String devStr(String cmp) {
        if (cmp != null) {
           cmp = cmp.replace('\'','´');
           cmp = "'" + cmp.replace('\u0096','-') + "'";
        } 
        else {
           cmp = "null";
        }
        return cmp;
    }

    protected String devInt(String cmp) {
        if(cmp.equals(""))
            return "null";
        else
            return cmp;
    }
    
}

//Os principais metodos dessa classe são conecta() q cria a conexão
//e o getResultSet(String) a String deve ser um comando SQL com retorno //tipo select
//e o exeQuery(String) a String nesse caso é codigo SQL sem retorno tipo insert

Criado 3 de agosto de 2005
Ultima resposta 5 de ago. de 2005
Respostas 5
Participantes 4