Estou a desenvolver um pequeno formulário web com as 4 operações de Banco. (update, insert, delete, select).
O formulário está criado (conforme anexo) e a função insert está funcionando.
Estou parado na função select que deverá ter o formulário preenchido novamente com os valores do banco de dados.
O problema que além de não retornar eu não to conseguindo passar o "jtextfield" do html com o código.
Anexo print da pequena tela e o codigo .java
Obrigado a todos.
public class Produtos
{
int idcategoria, idproduto = 0;
String codigo, produto, estoque, status = "";
// set and get
public void buscarProduto()
{
String q = "";
q += " select idcategoria, codigo, produto, estoque";
q += " from produtos where codigo = "+codigo;
Connection con = Conexao.obterConexao();
try
{
Statement st = con.createStatement();
st.executeUpdate(q);
status = "Produto " +codigo+ " encontrado.";
}
catch(SQLException e)
{
status = "Não foi possível buscar o produto com o código informado.";
}
}
}
Obs: Quero trocar esses botões enormes da tela por link de acesso, se puderem me ajudar a como "chamar" a função certa após clicar no link, ficaria melhor.
Já tenteou assim sem o where, o seu código pode estar vindo vazio, por isso não retorna nada!
public void buscarProduto()
{
String q = "";
q += " select idcategoria, codigo, produto, estoque from produtos ";
Connection con = Conexao.obterConexao();
try
{
Statement st = con.createStatement();
st.executeUpdate(q);
status = "Produto " +codigo+ " encontrado.";
}
catch(SQLException e)
{
status = "Não foi possível buscar o produto com o código informado.";
}
}
marcos.menezes
Caro amigo,
Mesmo assim, ainda não funcionou.
marcos.menezes
Caros amigos,
Quem puder me ajudar agradeço!
OBG.
ErickRAR
Coloque e.printStackTrace(); no catch para saber qual é o erro e poste-o aqui.
marcos.menezes
Fala ai Erick.
Segue.
java.sql.SQLException: Can not issue SELECT via executeUpdate().
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1705)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1665)
at wincomp.Produtos.buscarProduto(Produtos.java:117)
at org.apache.jsp.inclusaoproduto_jsp._jspService(inclusaoproduto_jsp.java:129)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
ErickRAR
Ah, não se usa executeUpdate para fazer SELECT. O correto é usar o ResultSet
public void buscarProduto() throws Throwable
{
String q = "";
q += " select idproduto, idcategoria, codigo, produto, estoque from produtos";
//q += " select * from produtos ";
q += " where codigo = '"+ codigo +"' ";
Connection con = null;
Statement st = null;
String query = "query";
try
{
//Statement st = con.createStatement();
//st.executeUpdate(q);
con = Conexao.obterConexao();
st = con.createStatement();
ResultSet rs = st.executeQuery(query);
List<Produtos> produtos = new ArrayList<Produtos>();
while (rs.next())
{
idproduto = rs.getInt("idproduto");
idcategoria = rs.getInt("idcategoria");
codigo = rs.getString("codigo");
produto = rs.getString("produto");
estoque = rs.getInt("estoque");
}
status = "Produto " + codigo + " encontrado.";
}
catch(SQLException e)
{
e.printStackTrace();
//status = "Não foi possível buscar o produto com o código informado.";
}
finally
{
st.close();
con.close();
}
}
ErickRAR
Amigão, Query é o seu select!
Stringquery="Select idproduto, idcategoria, codigo, produto, estoque FROM produtos";
....//aquelasoutraslinhasList<Produtos>produtos=newArrayList<Produtos>(); Produtop=null;while(rs.next()){p=newProduto();p.setIdProduto(rs.getInt("idproduto"));...//fazissoparatodososcamposp.setEstoque(rs.getInt("estoque"));produtos.add(p);}
Se for usar o WHERE para retornar apenas uma linha, procure aqui no fórum por PreparedStatement.
marcos.menezes
Caraca,
Tá Foda!
Erick, Obrigado pela sua ajuda não sei se está correto, provavelmente não, não da mais erro, compensação o retorno é 0 pra int e null pra String, e tem informações no banco, o Incluir tá funcionando.
Código abaixo.
publicvoidbuscarProduto()throwsThrowable{//String q = "";//q += " select idproduto, idcategoria, codigo, produto, estoque from produtos"; //q += " select * from produtos "; //q += " where codigo = '"+ codigo +"' "; Connectioncon=null;Statementst=null;Stringquery="select idproduto, idcategoria, codigo, produto, estoque from produtos";try{//Statement st = con.createStatement();//st.executeUpdate(q);con=Conexao.obterConexao();st=con.createStatement();ResultSetrs=st.executeQuery(query);List<Produtos>produtos=newArrayList<Produtos>();Produtosp=null;while(rs.next()){p=newProdutos();p.setIdproduto(rs.getInt(1));p.setIdcategoria(rs.getInt(2));p.setCodigo(rs.getString(3));p.setProduto(rs.getString(4));p.setEstoque(rs.getInt(5));produtos.add(p);}status="Produto "+codigo+" encontrado.";}catch(SQLExceptione){e.printStackTrace();//status = "Não foi possível buscar o produto com o código informado.";}finally{st.close();con.close();}}
ErickRAR
Poste o que imprime o e.printStackTrace();
marcos.menezes
Erick,
Agradeço voce mais eu vou ver isso depois em casa.
Eu to no trabalho e to ocupado agora.
Mas te agradeço!
Já te adianto.
Existem 3 jsp.
Incluir Produto, Buscar Produto, Alterar Produto.
Na tela incluir ao clicar em incluir BLZ inclui.
Na mesma tela incluir quando eu coloco o codigo e clico em buscar a tela buscarproduto.jsp me retorna os valores zerados ou nulos.
Agora não tá mais dando erro no e.printStackTrace, só tá retornando vazio.
Em casa vou ver isso… OBG.
ErickRAR
Beleza. Teste a query direto no banco de dados e veja se retorna algo.
marcos.menezes
Fala meu amigo, bom dia,
A Query funciona, o que não retorna são os valores AINDA. (:
Tá demais!