Oi pessoal
Estou desenvolvendo um site em java que já possui as seguintes classes:
dbaccess - classe que controla a conexão com o db;
dbmethods - executa métodos no db, como retornar ResultSet de uma consulta, ou apenas executar a consulta.
Estou tendo problema para chamar um método da classe dbmethods a partir de uma página jsp, o erro é:
C:\Tomcat5\work\Catalina\localhost\gsp\org\apache\jsp\test_005fcon_jsp.java:60: non-static method getResultset(java.lang.String) cannot be referenced from a static context
ResultSet tabela = dbmethods.getResultset(strSQL);
Código da página JSP:
dbaccess.setConexao("c:/tomcat5/webapps/gsp/gsp.mdb");
String strSQL = "SELECT * FROM usuarios";
StringBuffer saida = null;
ResultSet tabela = dbmethods.getResultset(strSQL);
saida = new StringBuffer();
saida.append("<h3>Resultado</h3><p>");
while (tabela.next())
{
saida.append("Id usuário: ").saida(tabela.getString("id_usuario"));
}
public ResultSet getResultset(String sql){
ResultSet rsTable = null;
try{
conn = dbaccess.getInstance().RetornaConexao();
if (conn == null)
{
System.out.println("Banco de dados não disponível.");
}
stmt = conn.createStatement();
rsTable = stmt.executeQuery(sql);
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
finally
{
dbaccess.getInstance().FechaConexao();
try{stmt.close();}catch(Exception ee){};
}
return rsTable;
}
pelo visto é simples… não olhei o código todo… mas c vc colocar
vai parar o erro… o problema ali é q vc ta tentando acessar um método estaticamente… e este método não é estatico
pois é, isso que eu não entendi.
pq ele tá dizendo que eu estou chamando estaticamente o método a partir na página jsp? Isso é que não me entrou na cabeça
vou fazer a mudança pra ver o que acontece.
Valeus.
Bom… pq??
vamos a resposta…
qual o nome da sua classe?? dbmethods ?? pergunto pq o normal é iniciar com maiusculas…
bom se este for o nome da sua classe… quando vc faz
dbmethods.metodo();// ... isso é uma referencia estatica....
//agora...
dbmethods meuDbMethods = new dbmethods();
meuDbMethods.metodo(); //isso aqui não é referencia estatica
[quote=“rashi”]pois é, isso que eu não entendi.
pq ele tá dizendo que eu estou chamando estaticamente o método a partir na página jsp? Isso é que não me entrou na cabeça
vou fazer a mudança pra ver o que acontece.
Valeus.[/quote]
Ah tah, entendi
mas acho que vou ter que mudar o que já fiz.
É o seguinte, preciso fazer o site com a estrutura:
- classe para controlar as conexões (pool)
- classe para efetuar consultas
- front-end em JSP.
O problema que estou enfrentando agora é outro:
- preciso fazer, em uma página JSP, uma chamada à classe de regras de negócios e, então, de posse do ResultSet, exibir os dados.
O problema é que ele sempre acusa que o ResultSet está fechado
Mas o que piora minha situação é que lendo um monte de livro e tutoriais não consigo encontrar nada que sequer chegue perto do que preciso fazer.
To lascada
[quote=“rashi”]Ah tah, entendi
mas acho que vou ter que mudar o que já fiz.
É o seguinte, preciso fazer o site com a estrutura:
- classe para controlar as conexões (pool)
- classe para efetuar consultas
- front-end em JSP.
O problema que estou enfrentando agora é outro:
- preciso fazer, em uma página JSP, uma chamada à classe de regras de negócios e, então, de posse do ResultSet, exibir os dados.
O problema é que ele sempre acusa que o ResultSet está fechado
Mas o que piora minha situação é que lendo um monte de livro e tutoriais não consigo encontrar nada que sequer chegue perto do que preciso fazer.
To lascada :/[/quote]
Bom para inicio tente isso
crie um pagina chamada Conexao.jsp só com esse código
<%
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/banco?user=user&password=pass");
Statement stm=con.createStatement();
%>
Depois cire uma pagina de teste d consulta:
<%@ include file="Conexao.jsp" %>
//pronto incluiu a chamada d conexao com o banco
//agora faça a consulta:
<%
String queryMapas="Select id,nome,nota,nnotas from xtabMapas Order by id desc";
String mapa="";
int id=0;
try{
ResultSet rs=stm.executeQuery(queryMapas);
while(rs.next()){
id=rs.getInt("id");
mapa=rs.getString("nome");
}
}
catch(SQLException ex){
out.println("Erro"+ex);
}
//se vc não tiver mans nenhuma consulata , pode fechar a conexão aqui, se tiver só feche depois da ultima.
finally{
stm.close();
con.close();
%>
}
Depois vc adapta parausar Beans, mas no começõ tente isso!! Valeu!!