Bom, hoje comecei a implementar uma Session na aplicação só que apareceu esse erro:
non-static variable ctUsuario cannot be referenced from a static context
non-static variable ctSenha cannot be referenced from a static context
Nessa parte aqui:
ResultSet rs = stmt.executeQuery("SELECT * FROM usuario WHERE user = '" + ctUsuario.getText() +"' AND senha = md5('"+ ctSenha.getText() +"')");
Procurei algo parecido e não consegui resolver.
[]'s
Cara vc deve estar querendo um usar uma variável não estática dentro de um método estático.
suas duas variaveis são declaradas normais e o metodo que vc esta usando eh static.
E como eu posso mudar o meu TextField para static ?
[]'s
[quote=Vander Carlos]E como eu posso mudar o meu TextField para static ?
[]'s[/quote]
A pergunta que você fez está errada. O correto é perguntar “o que devo fazer para tirar os “statics” do meu código”?
De modo geral, exceto pelo “main” e pelos “public static final ___ CONSTANTE = ____”, não é bom ficar abusando de statics.
Tem como eu deixer essa minha Session sem o static ?
public static class Sessao{
private static Sessao instance = null;
private Usuario usuario;
private Sessao(){
}
public void setUsuario(Usuario usuario){
this.usuario = usuario;
}
public Usuario getUsuario(){
return usuario;
}
public static Sessao getInstance(){
if(instance == null){
instance = new Sessao();
}
return instance;
}
Sessao sessao = Sessao.getInstance();
sessao.setUsuario(usuario);
Quando eu tiro todos os métodos estáticos e instancio o método aparece isso:
non-static method getInstance() cannot be referenced from a static context
primeiro eu recomendo a você estudar o que é um método/propriedade estática.
E para seu código funcionar, você tira os static, exceto o do getInstance, esse deve continuar sendo static. E na hora de você executar o método getInstance a partir de um ambiente não estático, você usa “session = Session.getInstance();”
Dessa forma?
[code]public class Sessao{
private static Sessao instance = null;
private Usuario usuario;
private Sessao(){
}
public void setUsuario(Usuario usuario){
this.usuario = usuario;
}
public Usuario getUsuario(){
return usuario;
}
public static Sessao getInstance(){
if(instance == null){
instance = new Sessao();
}
return instance;
}
} [/code]
Existe apenas e tão somente uma sessão no seu sistema inteiro (que é a sua intenção, usando “static”)? Parece um bocadinho amarrado.
Estou usando uma sessão em uma classe que envia Email:
...
Session session = Session.getDefaultInstance(props, auth);
session.setDebug(true); //Habilita o LOG das ações executadas durante o envio do email
...