Corrigi o o sql e continua com o mesmo erro anterior:
..
String sql = "select * from listaCampanha where modelo like ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, modelo);
L
lsjunior
Achei estranho da esse erro pra vc depois que colocou espaço entre o 'LIKE' e o '?'. Olha um teste que fiz e não deu erro:
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjunit.framework.TestCase;publicclassDBTestextendsTestCase{publicvoidtest1()throwsException{// new Driver();Connectionc=DriverManager.getConnection("jdbc:mysql://localhost/ccc","root","root");PreparedStatementstmt=c.prepareStatement("SELECT * FROM tb_usuario WHERE NOM_USUARIO LIKE ?");stmt.setString(1,"%Adm%");ResultSetrs=stmt.executeQuery();while(rs.next()){System.out.println(rs.getString("NOM_USUARIO"));}rs.close();stmt.close();c.close();}}
O erro que ocorre continua o mesmo?(reclamando do '?')
C
CaioNascimento
È estranho mesmo o erro persiste:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3206)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:1232)
at dao.mysql.campanhaDaoMysql.listarTodasCampanhas(campanhaDaoMysql.java:44)
at Controlador.Servlet.processRequest(Servlet.java:43)
at Controlador.Servlet.doPost(Servlet.java:80)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:662)
String sql = "select * from produtos where DESCRICAO like " + “’%Mini%’”
e tira o setString.
o engracado que testei aqui no oracle e tudo ele aceita like junto com ?, like com ‘’ sem ‘’. ele aceita tudo.
parece que o mysql eh mais enjoado.
[]´s
C
CaioNascimento
A unica forma que funcionou foi assim:
String sql = “select * from tabela where campo like " +”’"+variável+"’";
gambis total.
nel
Oi.
Veja:
Stringsql="select * from listaCampanha where modelo like '%?%'";
Desculpe, creio que precise das aspas simples (’ ') para funcionar.
Acredito que funcione perfeitamente.
C
CaioNascimento
28/11/2011 09:58:07 dao.mysql.campanhaDaoMysql listarTodasCampanhas
GRAVE: null
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
nel
Teste da forma como menciono em post anterior.
A
AbelBueno
Acredito que com o select no formato abaixo deve funcionar:
Stringsql="select * from listaCampanha where modelo like ?";//apenas coloca o espaço no like
Agora, acho que o outro problema está no resto do seu código, neste trecho:
Repare que está usando o método executeQuery passando a variável sql novamente como parâmetro.
Utilize a versão sem parâmetros stmt.executeQuery()
mauricioadl
PreparedStatementstmt=conn.prepareStatement(sql);stmt.setString(1,modelo);ResultSetrs=stmt.executeQuery(sql);// AQUI ESTA O ERRO REMOVA O PARAMETRO sqlList<campanha>lista=newArrayList();
mauricioadl
xD o amigo ae de cima ja matou a charada antes.
[]´s
nel
Oi.
Se testou assim:
Stringsql="select * from listaCampanha where modelo like '%?%'";
E existe algum erro ainda, creio que o problema seja questão de caracter de escape.
Provavelmente terás de usar um caracter de escape para conseguir inserir isso da forma correta.
Abraços.
C
CaioNascimento
nel:
Teste da forma como menciono em post anterior.
Fiz isso, deu o erro que mencionei
String sql = "select * from listaCampanha where modelo like"+"'%?%'";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, modelo);
mauricioadl
faça como o AbelBueno disse que ira resolver e ficar de forma correta.
nao esqueca de por resolvido no topico.
[]´s
C
CaioNascimento
AbelBueno:
Acredito que com o select no formato abaixo deve funcionar:
Stringsql="select * from listaCampanha where modelo like ?";//apenas coloca o espaço no like
Agora, acho que o outro problema está no resto do seu código, neste trecho: