Duvida banco de dados

9 respostas
O

pessoal, eu tenho uma duvida bem simples:

estou criando uma aplicação que utiliza banco dados e gostaria de saber como faço para resgatar do banco o valor de um campo específico
por exemplo: o campo razao de uma tabela que contenha diversos dados a respeito de uma empresa

para isso estava tentando utillizar o metodo getString() da classe ResultSet

vou mostrar uma porção do código para que fique mais clara a dúvida:

Statement stm;
String sql=“Select * from tb_gecol where cnpj=”+cnpj+"";

ResultSet rs;
    try{
        stm=con.createStatement();
        rs=stm.executeQuery(sql);
      
        
        String a=rs.getString(razao);//aqui esta o metodo que eu achava que obteria o valor da coluna razao
        System.out.println(a);//e aqui eu imprimiria a razao social do cnpj pesquisado
        stm.close();
    }
     catch (SQLException ex) {
        ex.printStackTrace();
    }

se alguém puder ajudar ou indicar pelo menos o nome do metodo adequado eu agradeço

9 Respostas

F
String sql="Select razao from tb_gecol where cnpj="+cnpj+"";
..
String a=rs.getString(1);
J
Statement stm;
String sql = "Select * from tb_gecol where cnpj="+cnpj+"";

ResultSet rs;
try{
   stm = con.createStatement();
   rs = stm.executeQuery(sql);

   if(rs.next()){
      String a = rs.getString("razao");
      System.out.println(a);
   }
   stm.close();
}catch (SQLException ex) {
   ex.printStackTrace();
}

Obs.: prefira usar PreparedStatement no lugar de Statement quando precisar passar parametros para a query.

O

pq jairelton?
qual a diferença entre as duas??
obrigado pelas respostas

O

pior q o meu erro era idiota pra caramba!!
esqueci as “” na String q enviava como parametro

J

São basicamente duas diferenças:

1 - Você não precisa formatar o parametro de acordo com o seu banco, isso fica a cargo do driver.

Ex.:

String sql = "INSERT INTO compras (descricao, valor, quantidade, data) VALUES (?, ?, ?, ?)");

PreparedStatement stmt = conexao.prepareStatement(sql);

stmt.setString(1, "Produto 1");
stmt.setDouble(2, 258.05);
stmt.setInt(3, 5);
stmt.setDate(4, new java.sql.Date(System.currentTimeMillis());

stmt.executeUpdate();

No seu exemplo ficaria assim:

PreparedStatement stm;

String sql = "select * from tb_gecol where cnpj = ?";

ResultSet rs;

try{
   stm = con.prepareStatement(sql);
   stm.setString(1, cnpj);

   rs = stm.executeQuery();

   if(rs.next()){
      String a = rs.getString("razao");
      System.out.println(a);
   }
   stm.close();
}catch (SQLException ex) {
   ex.printStackTrace();
}

2 - O sql é compilado pelo banco e fica pronto para receber multiplas execuções (muito importante caso sua aplicação faça varias chamadas para o mesmo SQL).

O

aa entendi,
valeu pela ajuda!!

O

puts cara mas assim!!!
estava testando o metodo q vc mostrou para fazer consultas usando PreparedStatement
só q surgiu um problema talvez seja por ser data

PreparedStatement stmt;
        ResultSet rs;
        
        String sql="Select * from tb_gecol where pesquisa=? and cobranca>=? and cobranca<=?";
        
        try{
            stmt=con.prepareStatement(sql);
            stmt.setString(1, pesquisa);
            stmt.setDate(2,datainicial);//esta dando erro nessas duas linhas
            stmt.setDate(3,datafinal);//o compilador nao consegue encontrar esses dois metodos mas é impossivel pois conferi ate a docu
//mentacao e la estao eles, o q esta havendo?? 
            
            rs=stmt.executeQuery(sql);
            razao=rs.getString(3);
             
        }catch (SQLException ex) {
                ex.printStackTrace();
            }
aqui abaixo vou postar a maneira q obtive as datas:
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        inicial=txtinicial.getText();
        
        try{
                 datainicial = df.parse(inicial);   //todos as variaveis foram devidamente declaradas em outra parte do codigo             
            }
            catch(ParseException ex) {
             Logger.getLogger(Cadastro.class.getName()).log(Level.SEVERE, null, ex);
            }

qual sera o problema??

J

Pelo que parece sua variavel “datainicial” é do tipo java.util.Date e o metodo setDate(), recebe um java.sql.Date.

Faça assim:

stmt.setDate(2, new java.sql.Date(datainicial.getTime())); stmt.setDate(3, new java.sql.Date(datafinal.getTime()));

Documentação:
http://java.sun.com/javase/6/docs/api/java/sql/PreparedStatement.html#setDate(int,%20java.sql.Date)
http://java.sun.com/javase/6/docs/api/java/sql/Date.html
http://java.sun.com/javase/6/docs/api/java/util/Date.html

O

valeu velho obrigado!!!

Criado 26 de fevereiro de 2008
Ultima resposta 4 de mar. de 2008
Respostas 9
Participantes 3