Classe que não reconhece o out do System.out e variavel static de outra classe

6 respostas
G

Alguém conseguiria desvendar esse mistério? Só ser um erro banal, porém, como estou começando agora com Java é difícil entender alguns erros. A idéia da classe é acessar os dados do banco de dados, mas ele tá dando erro numa linha do System.out.println. É como se ele não reconhecesse o out do System; além disso também ele não está conseguindo reconhecer a variavel status da class ConexaoBD que é uma variável static. O engraçado é que testei essas mesma linhas ( tirando o método inserir, mas com o conteúdo que está dentro desse metodo ) na classe principal do Main e compilou direitinho, inserindo no Banco de Dados, porém, como quero trabalhar com encapsulamento tive que fazer essa nova classe e está dando esses erros.

package bancodedados;

import com.mysql.jdbc.Statement;

import java.sql.Connection;

import java.sql.SQLException;

public class AcessandoBD{

// faz conexão com banco de dados
    Connection con = ConexaoBD.getConnection();  // conexao
//    String con1 = ConexaoBD.status;
    System.out.println (ConexaoBD.status);    // ver resultado ---> erro aki: cannot find symbol 
                                                                                         --->              symbol: class out
                                                                                          ---->                  <identifier> expected
                                                                                           ---->                 missing method body or declare abstract

                                                                                           --->                   cannot find symbol
                                                                                           ---->                     symbol: class status
                                                                                            ---->               location: class bancodedados.ConexaoBD
                                                                                            ----->             <identifier>expected
    
    String status="";
    
    void insere(){
    
    try{
            // cria objeto Statement que serve para acessar o banco de dados
            Statement st = (Statement) con.createStatement();
            String q = "";
            q+="Insert Into vagas(placa) values('NOT-3337')";
            int executeUpdate = st.executeUpdate(q);
       } catch(SQLException e){
           status = e.getMessage();
        } catch (Exception e) {
            status = e.getMessage();
        }
    
    }

}

Se ajudar estou colocando logo abaixo a classe ConexaoBD:

package bancodedados;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

public class ConexaoBD
{

public static String status="";

public static Connection getConnection()
{
    Connection con = null;
    
    try{
        // carrega o driver
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        // conecta com o banco
        String url = "jdbc:mysql://127.0.0.1/estacionamento?user=root&password=291515"; // armazena url
        con = DriverManager.getConnection(url); // conecta com banco
        
        status = "Conexão aberta!";
        
       }
         catch(SQLException e){
           status = e.getMessage();
       } catch(ClassNotFoundException e) {
            status = e.getMessage();
       } catch (Exception e) {
            status = e.getMessage();
       }
    return con;
}

}

6 Respostas

Andersonrms

Cara, eu nem testei, mas dando uma olhada eu acho q o erro é pq essa linha tá fora d qq bloco. Não sei se isso vai te confundir um pouco, mas se vc colocar essa linha entre chaves provavelmente funcionará. Tipo:

{
System.out.println (ConexaoBD.status);
}

Ou então você pode colocar dentro de um construtor, tipo:

public AcessandoBD( ) {
System.out.println (ConexaoBD.status);
}

Testa ai e vê se funciona.

G

Caraca…
Vc salvou meu projeto…(hehehe) fikei horas tentando entender esse erro e duas simples chaves resolveram…Java tem suas vantagens, mas também é bem “fresquinha” às vezes. Valeu!!!

adriano_si

Pra você, o que uma linguagem “NÃO fresquinha” faria com um bloco de código totalmente fora de qualquer escopo ???

ViniGodoy

Tópico movido para o fórum de Java Básico.

G

Pra você, o que uma linguagem “NÃO fresquinha” faria com um bloco de código totalmente fora de qualquer escopo ???

Querido, como eu falei anteriormente, estou aprendendo Java…para mim tem muita coisa nova. Pelo fato de estar dentro da classe e ter aberto e fechado parênteses achei que isso seria o próprio escopo. Desculpe se não tenho a experiência como acredito que vc deva ter. Eu sou acostumada a programar em C, assembly,etc mas em Java não. Quando chamei de “fresquinha” foi referindo-me ao que não consigo visualizar com tanta facilidade como vc por exemplo.

Andersonrms

Pra você, o que uma linguagem “NÃO fresquinha” faria com um bloco de código totalmente fora de qualquer escopo ???

Querido, como eu falei anteriormente, estou aprendendo Java…para mim tem muita coisa nova. Pelo fato de estar dentro da classe e ter aberto e fechado parênteses achei que isso seria o próprio escopo. Desculpe se não tenho a experiência como acredito que vc deva ter. Eu sou acostumada a programar em C, assembly,etc mas em Java não. Quando chamei de “fresquinha” foi referindo-me ao que não consigo visualizar com tanta facilidade como vc por exemplo.

Só pra dar uma clareada e não ficar como duas simples chaves q não fazem nenhum sentido. Isso se chama bloco de inicialização e é usado para inicializar as variáveis d forma uniforme para todos os construtores da classe.

Criado 30 de abril de 2012
Ultima resposta 1 de mai. de 2012
Respostas 6
Participantes 4