esse é o trecho código do JForm depois de initComponents() tem o conexao = App.connect(), o que em teoria daria certo com MySQL, mas aqui fica sublinhado em vermelho como erro. no ponto de exclamação ao lado esta escrito: non-static method connect() cannot be referenced from static context
não consigo postar o código inteiro
public ExportaNome() {
initComponents();
conexao = App.connect();
this.setLocationRelativeTo(null);
}
private final String url = “jdbc:postgresql://localhost/NBtutorial”;
private final String user = “postgres”;
private final String password = “1234Marcos”;
public Connection connect() {
Connection conn = null;
try {
conn = DriverManager.getConnection(url, user, password);
System.out.println("Connected to the PostgreSQL server successfully.");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
return conn;
}
public static void main(String[] args) {
App app = new App();
app.connect();
ExportaNome expnome = new ExportaNome();
expnome.setVisible(true);
}
Não consigo atribuir o método connect() em App ao conexao em ExportaNome. e conectar o JForm. Como o Connection conexao = null na classe App o JForm não conecta pois está com null atribuído e não connect() o que da erro.
já tentei isso tb. dá erro no conn que atribui o driver na classe App, acredito que a mensagem diz que o url, o user e o password não podem ser referenciados por um método estático, mas a segunda parte deu certo.
A partir do momento em que vc coloca um método como estático, ele não pode referenciar propriedades da classe que não sejam estáticas. Com isso, vc deve fazer as variáveis url, user e password estáticas também.
Quando um elemento de código é estático, ele já terá uma instância criada automaticamente qdo o programa rodar. Com isso, ele deve ter acesso apenas à propriedades que também terão uma instância qdo a aplicação for executada (com exceção dos parâmetros no caso de métodos).
depois de criar uma instância de App e chamar o método usando a referência que vc passou
os erros sumiram sem precisar referenciar nenhum método como estático:
Connection conexao = null;
PreparedStatement pst = null;
ResultSet rs = null;
*App app= new App();*
/**
* Creates new form ExportaNome
*/
public ExportaNome() {
initComponents();
*conexao = app.connect();*
this.setLocationRelativeTo(null);
}
mas parece que o conn = DriverManager.getConnection(url, user, password); no App não pega.
no try catch vai pro catch e exibe a mesagem de erro . Quando roda
Na verdade mesmo com a mensagem de erro tava registrando o nome e sobrenome.
Porém para corrigir o erro postei a mensagem da janela no google e fui parar nesse tutorial que explica o erro: