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.";
}
}
M
marcos.menezes
Caro amigo,
Mesmo assim, ainda não funcionou.
M
marcos.menezes
Caros amigos,
Quem puder me ajudar agradeço!
OBG.
E
ErickRAR
Coloque e.printStackTrace(); no catch para saber qual é o erro e poste-o aqui.
M
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)
E
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();
}
}
E
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.
M
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();}}
E
ErickRAR
Poste o que imprime o e.printStackTrace();
M
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.
E
ErickRAR
Beleza. Teste a query direto no banco de dados e veja se retorna algo.
M
marcos.menezes
Fala meu amigo, bom dia,
A Query funciona, o que não retorna são os valores AINDA. (:
Tá demais!