Olá Pessoal,
Sou novo por aqui e tb sou novato em java.
Estou há dias tentando me conectar a um banco de dados MySql, através de um javabean de conexão e não consigo.
Uso uma pág HTML p/ chamar um servlet e este servlet importa o pacote javabean para que eu possa instancia-lo e usar suas funções públicas.
Experimentei usar esse bean p/ abrir um banco de dados ACCESS através de ODBC e funcionou.
Outro detalhe interessante é q quando eu estabeleço a conexao diretamente no servlet, com todas as funções dentro do servlet, funciona. Mas através do bean nao vai de jeito nenhum.
Eu coloquei o arquivo “mysql-connector-java-3.1.12-bin.jar” dentro da pasta lib do WEB-INF da aplicação. Tinha lido q isso seria o suficiente.
Como continuou com o problema adicionei a seguinte linha no classpath do autoexec.bat.
SET CLASSPATH=%CATALINA_HOME%\COMMON\LIB\mysql-connector-java-3.1.12-bin.jar;%CLASSPATH%
Tb não resolveu.
Abaixo aparece vai um trecho do erro q surge no navegador, a classe do servlet e do bean de conexão.
Se alguém puder me ajudar, agradeço desde já.
Abraços
Zovao
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
at CadServletFileBeanConexArq.doPost(CadServletFileBeanConexArq.java:185)
…
A linha 185 é a q chama a função insertIntoDB do javabean.
========///////////////===============
Aqui está o codigo do CadServletFileBeanConexArq.java
import <a href="http://java.io">java.io</a>.<em>;
import java.io.File;
import javax.servlet.</em>;
import javax.servlet.http.<em>;
import java.util.</em>;
import java.sql.<em>;
import java.text.DecimalFormat;
import conJdbc.</em>;
import arquivo.*;
public class CadServletFileBeanConexArq extends HttpServlet {
public ResultSet rs = null;
public ConexPed connect = null; //da classe ConexPed do pacote importado conJdbc
private String driver = “com.mysql.jdbc.Driver”; //antigo: “org.gjt.mm.mysql.Driver”; dizem q a atual é: “com.mysql.jdbc.Driver”;
private String URL = “jdbc:mysql://localhost:3306/cadastro”;
private ArrayList listaPedido = new ArrayList(); //vai conter a lista de produtos do pedido
private ArquivoIO arq = null; //da classe ArquivoIO do pacote importado arquivo
public void init( ServletConfig config )
throws ServletException
{
super.init( config );
try
{
connect = new ConexPed(driver, URL, “monty”, “some_pass”);
}
catch ( Exception e )
{
e.printStackTrace();
connect = null;
}
try
{
arq = new ArquivoIO();
}
catch ( Exception e )
{
e.printStackTrace();
arq = null;
}
}
public void doPost( HttpServletRequest req,
HttpServletResponse res )
throws ServletException, IOException
{
boolean success = true;
String email, nome, sobrenome, produto, valor, valorFormatado, temp;
String palavraLista;
String campo[] = new String[2];
double soma;
DecimalFormat doisDigitos = new DecimalFormat(“0.00”);
String textoLido1= new String();
String textoLido2= new String();
String textoLido3= new String();
String textoToken= new String();
String textoTokenAbaixo= new String();
soma = 0.00;
email = req.getParameter( “Email” );
nome = req.getParameter( “Nome” );
sobrenome = req.getParameter( “Sobrenome” );
produto = req.getParameter( “Produto” );
valor = req.getParameter( “Valor” );
PrintWriter output = res.getWriter();
res.setContentType( “text/html” );
if (listaPedido.size() > 0)
{
try
{
StringTokenizer tokens;
for (int k=0; k < listaPedido.size(); k++ )
{
palavraLista = String.valueOf(listaPedido.get(k)); //converte em string cada item da listaPedido a ser tokenizado
if ( req.getParameter( palavraLista ) != null )
{
tokens = new StringTokenizer( palavraLista, “$” );
int numCampo = 0;
while ( tokens.hasMoreTokens() )
{
campo[numCampo] = tokens.nextToken(); //campo[0] contem Email e [1] possui produto
numCampo = numCampo + 1;
}
connect.executeUpdate( “DELETE * FROM pedido WHERE Email = '” + campo[0] + “’” + “AND Produto = '” + campo[1] + “’” );
}
}
esvaziaLista( listaPedido );
}
catch ( Exception e )
{
System.err.println(
“ERROR: Problemas ao ler registros” );
e.printStackTrace();
}
}
else
{
if ( email.equals( “” ) || nome.equals( “” ) || sobrenome.equals( “” ) || valor.equals( “” ) )
{
output.println( “<H3> Por favor retorne c/o botão e preencha novamente.</H3>” );
output.close();
return;
}
}
if ( > 0 && email.length()nome.length() > 0 && sobrenome.length() > 0 && valor.length() > 0 )
{
/* inserindo campos */
success = connect.insertIntoDB( );
"’" + email + “’,’” + nome + “’,’” + sobrenome + “’,’” + produto + “’”, Double.parseDouble(valor)
}
if ( success )
{
try
{
rs = connect.executeQuery( “SELECT * FROM pedido WHERE Email = '” + email + “’” );
… código q trata com outro bean q funcionou.
while ( rs.next() )
{
…
}
}
catch ( Exception e )
{
System.err.println(
“ERROR: Problemas ao ler registros” );
e.printStackTrace();
}
}
else
output.print( "<H2>Ocorreu um erro. " +
“Por favor, tente depois.</H2>” );
output.close();
}
private void esvaziaLista( Collection c )
{
Iterator i = c.iterator();
while ( i.hasNext() )
if ( i.next() instanceof String )
i.remove();
}
public void destroy()
{
connect.fecharConexao();
}
}
=============///////////////============
Aqui está o contrutor do JavaBean.
package conJdbc;
import java.sql.*;
public class ConexPed
{
public Connection connection;
public Statement statement;
public ConexPed (String driver, String urlServidor, String user, String password)
throws SQLException
{
try
{
Class.forName(driver);
connection = DriverManager.getConnection(urlServidor,user,password);
}
catch (ClassNotFoundException ex)
{
System.out.println("Não foi possível encontrar a classe do Driver: " + driver);
}
catch (SQLException ex)
{
System.out.println(“Não foi possível conectar ao servidor”);
throw ex;
}
try
{
statement = connection.createStatement();
}
catch (SQLException ex)
{
System.out.println(“Não foi possível criar a statement”);
throw ex;
}
}
…