Amigos, a coisa eh mais simples, o coringa pra microsoft nao eh '%' e sim '*',
faz um teste e ve se resolve, []'s Claudio On Mon, 30 Sep 2002 11:55:22 -0300, <[EMAIL PROTECTED]> escreveu : > De: <[EMAIL PROTECTED]> > Data: Mon, 30 Sep 2002 11:55:22 -0300 > Para: <[EMAIL PROTECTED]> > Assunto: RES: [enterprise-list] PreparedStatement > > > Deveria funcionar perfeitamente, mas Micro$oft � sempre uma exce��o � regra. Tente >procurar algo na base da Microsoft, provavelmente eles n�o implementam corretamete o padr�o Java de conex�o ao BD, como sempre Microsoft = portabilidade e compatibilidade zero. > > Esse tipo de instru��o funciona em qualquer banco que eu conhe�o (Oracle, Sybase e >DB2), por sorte nunca trabalhei com o MS SQL Server. > > > Boa Sorte, > > Sandro Toledo > > > -----Mensagem original----- > De: Davi Medeiros Cabral [mailto:[EMAIL PROTECTED]] > Enviada em: sexta-feira, 27 de setembro de 2002 20:31 > Para: [EMAIL PROTECTED] > Assunto: Re: [enterprise-list] PreparedStatement > > > Sandro, > j� fiz a substitui��o, mas n�o funcionou. Tentei fazer algumas modifica��es > e aconteceu o seguinte, no c�digo abaixo: da maneira como est� n�o aparece > nada no browser, mas quando substituo a linha > >> statement=connection.prepareStatement("SELECT * FROM AGENDA WHERE NOME > LIKE ?"); > >> statement.setString(1,"%davi%"); > por qualquer uma dos blocos de instru��es comentados, os valores desejados > s�o retornados. N�o sei se tem haver, mas o SGBD que estou utilizando � > Microsoft SQL Server. > Antecipadamente, obrigado a todos. > > import java.io.*; > import javax.servlet.*; > import java.sql.*; > > public class ServletPrepared extends GenericServlet > { > > public void service(ServletRequest req, ServletResponse res) > { > ResultSet rset; > PrintWriter out; > Connection connection; > PreparedStatement statement; > String tmp; > > try > { > out=res.getWriter(); > Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); > connection=DriverManager.getConnection("jdbc:odbc:webapp","sa",""); > > // * Primeiro bloco de instru��es > // * statement=connection.prepareStatement("SELECT * FROM AGENDA WHERE > CODIGO > ?"); > // * statement.setInt(1,1); > > > // * Segundo bloco de instru��es > // * statement=connection.prepareStatement("SELECT * FROM AGENDA WHERE NOME > LIKE '%davi%'"); > > statement=connection.prepareStatement("SELECT * FROM AGENDA WHERE NOME > LIKE ?"); > statement.setString(1,"%davi%"); > > rset=statement.executeQuery(); > while (rset.next()) > { > out.print(rset.getString(2)+"<br>"); > } > connection.close(); > } > catch(ClassNotFoundException e) > { > System.out.println("Driver unavailabe: "+e.getMessage()); > } > catch(IOException e) > { > System.out.println(e.getMessage()); > } > catch(SQLException e) > { > System.out.println(e.getMessage()); > } > > } > } > > > ----- Original Message ----- > From: <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Cc: <[EMAIL PROTECTED]> > Sent: Friday, September 27, 2002 9:59 AM > Subject: RES: [enterprise-list] PreparedStatement > > > Quer ter seu pr�prio endere�o na Internet? > Garanta j� o seu e ainda ganhe cinco e-mails personalizados. > Dom�niosBOL - http://dominios.bol.com.br > > > Troque as linhas > > >> statement=connection.prepareStatement("SELECT * FROM AGENDA WHERE NOME > LIKE '%?%'"); > >> statement.setString(1,"davi"); > > para > > >> statement=connection.prepareStatement("SELECT * FROM AGENDA WHERE NOME > LIKE ?"); > >> statement.setString(1,"%davi%"); > > > > Sandro Toledo > > > -----Mensagem original----- > De: Davi Medeiros Cabral [mailto:[EMAIL PROTECTED]] > Enviada em: sexta-feira, 27 de setembro de 2002 00:46 > Para: [EMAIL PROTECTED] > Assunto: [enterprise-list] PreparedStatement > > > Numa conex�o com o banco de dados, o PreparedStatement � adquado para ser > utilizado com um comando SELECT? Por exemplo, o seguinte c�digo n�o > funcionou comigo (tentei colocar da maneira mais resumida que consegui). > > import java.io.*; > import javax.servlet.*; > import java.sql.*; > > public class ServletPrepared extends GenericServlet > { > > public void service(ServletRequest req, ServletResponse res) > { > ResultSet result; > PrintWriter out; > Connection connection; > PreparedStatement statement; > > try > { > Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); > connection=DriverManager.getConnection("jdbc:odbc:webapp"); > statement=connection.prepareStatement("SELECT * FROM AGENDA WHERE NOME > LIKE '%?%'"); > statement.setString(1,"davi"); > result=statement.executeQuery(); > if (result!=null) > { > out=res.getWriter(); > while(result.next()) > out.print(result.getString(1)); > out.flush(); > } > connection.close(); > } > catch(ClassNotFoundException e) > { > System.out.println("Driver unavailabe: "+e.getMessage()); > } > catch(IOException e) > { > System.out.println(e.getMessage()); > } > catch(SQLException e) > { > System.out.println(e.getMessage()); > } > > } > } > > O erro gerado foi: > > java.lang.NullPointerException > at ServletPrepared.service(ServletPrepared.java:35) > at > com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:9 > 6) > at com.caucho.server.http.Invocation.service(Invocation.java:312) > at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135) > at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:221) > at > com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:163) > at com.caucho.server.TcpConnection.run(TcpConnection.java:137) > at java.lang.Thread.run(Thread.java:484) > > O script da tabela utilizada foi o seguinte: > > CREATE TABLE [dbo].[Agenda] ( > [Codigo] [int] IDENTITY (1, 1) NOT NULL , > [Nome] [varchar] (50) NOT NULL , > [Fone] [char] (10) NOT NULL , > [EMail] [varchar] (20) NULL > ) > > > --------------------------------------------------------------------- > Para cancelar a subscri��o, envie mensagem para: > [EMAIL PROTECTED] > Para comandos adicionais, envie mensagem para: > [EMAIL PROTECTED] > > > > > --------------------------------------------------------------------- > Para cancelar a subscri��o, envie mensagem para: > [EMAIL PROTECTED] > Para comandos adicionais, envie mensagem para: > [EMAIL PROTECTED] > > > > > --------------------------------------------------------------------- > Para cancelar a subscri��o, envie mensagem para: >[EMAIL PROTECTED] > Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED] > > > > > --------------------------------------------------------------------- > Para cancelar a subscri��o, envie mensagem para: >[EMAIL PROTECTED] > Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- Para cancelar a subscri��o, envie mensagem para: [EMAIL PROTECTED] Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]
