Duvida banco de dados

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

String sql="Select razao from tb_gecol where cnpj="+cnpj+"";
..
String a=rs.getString(1);

[code]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();
}[/code]

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

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

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

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.:

[code]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();[/code]

No seu exemplo ficaria assim:

[code]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();
}[/code]

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).

aa entendi,
valeu pela ajuda!!

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

[code]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();
        }[/code]

aqui abaixo vou postar a maneira q obtive as datas:

[code]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);
        }[/code]

qual sera o problema??

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

valeu velho obrigado!!!