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]
