Gravar no banco. Funciona em um PC e nao em outro

4 respostas
R

Ola,

Estou com um problema em uma classe.
A minha classe funciona em um computador, mas nao funciona em outros.
segue a classe:

public class TesteDao {
    private Statement stm = null;
    private ConBD conec = new ConBD();

		public void adiciona(Teste teste) throws SQLException, ParseException {
		    try {
		           stm = ConBD.getConnection().createStatement();
		           PreparedStatement pstmt = stm.getConnection().prepareStatement(
		             "insert into teste values (?, ?, ?) ");
		           pstmt.setInt(1, teste.getId());
		           pstmt.setString(2, teste.getDescricao());
		           pstmt.setInt(3, teste.getQuant());
		           pstmt.executeUpdate();
		         } catch (SQLException ex) {
		           System.out.println("erro na inclusao");
		         } 
		         conec.desconBD();
		         
//		         stm.close();
		}
Aparece o seguinte erro:

Conectou ao BD  // essa mensagem e’ da classe de conexao

erro na inclusao

java.lang.NullPointerException

at jdbc.ConecBD.desconecDB(ConecBD.java:29)

at DAO.AlunosDao.adiciona(TesteDao.java:29)

at org.apache.jsp.GravaTeste_jsp._jspService(GravaTeste_jsp.java:82)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

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.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:127)

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:298)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Unknown Source)

GravaTeste.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="java.util.*, DAO.*" %>
<jsp:useBean id="testeDao" class="DAO.TesteDao" scope="session" />   
<jsp:useBean id="teste" class="DAO.Teste" scope="session" />   
	
	<%	
		teste.setId(Integer.parseInt(request.getParameter("ID")));
		teste.setDescricao(request.getParameter("descricao"));
		teste.setQuantidade(request.getParameter("quantidade"));
		testeDao.adiciona(teste);
	%>

No meu computador funciona, mas quando copiei para o notebook, nao funciona.
O banco e o SQL server 2005, esta com o tcp/ip habilitado, com 1433 e nao esta
com firewall. Estou autenticando pelo SQL, ou seja, esta igual ao meu PC.

4 Respostas

Carlos_ds_jar

rsaforuns:
Ola,

Estou com um problema em uma classe.
A minha classe funciona em um computador, mas nao funciona em outros.
segue a classe:

public class TesteDao {
    private Statement stm = null;
    private ConBD conec = new ConBD();

		public void adiciona(Teste teste) throws SQLException, ParseException {
		    try {
		           stm = ConBD.getConnection().createStatement();
		           PreparedStatement pstmt = stm.getConnection().prepareStatement(
		             "insert into teste values (?, ?, ?) ");
		           pstmt.setInt(1, teste.getId());
		           pstmt.setString(2, teste.getDescricao());
		           pstmt.setInt(3, teste.getQuant());
		           pstmt.executeUpdate();
		         } catch (SQLException ex) {
		           System.out.println("erro na inclusao");
		         } 
		         conec.desconBD();
		         
//		         stm.close();
		}
Aparece o seguinte erro:

Conectou ao BD  // essa mensagem e’ da classe de conexao

erro na inclusao

java.lang.NullPointerException

at jdbc.ConecBD.desconecDB(ConecBD.java:29)

at DAO.AlunosDao.adiciona(TesteDao.java:29)

at org.apache.jsp.GravaTeste_jsp._jspService(GravaTeste_jsp.java:82)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

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.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:127)

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:298)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Unknown Source)

GravaTeste.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="java.util.*, DAO.*" %>
<jsp:useBean id="testeDao" class="DAO.TesteDao" scope="session" />   
<jsp:useBean id="teste" class="DAO.Teste" scope="session" />   
	
	<%	
		teste.setId(Integer.parseInt(request.getParameter("ID")));
		teste.setDescricao(request.getParameter("descricao"));
		teste.setQuantidade(request.getParameter("quantidade"));
		testeDao.adiciona(teste);
	%>

No meu computador funciona, mas quando copiei para o notebook, nao funciona.
O banco e o SQL server 2005, esta com o tcp/ip habilitado, com 1433 e nao esta
com firewall. Estou autenticando pelo SQL, ou seja, esta igual ao meu PC.


Rapaz posta aí a sua classe de conexão com o BD e aproveita e explica melhor o que vc esta fazendo vc está tentando acessar o seu servidor de banco de dados do desktop pelo nootbook ou vc está criando um novo banco de dados no nootbook?

R

Estou so’ copiando o projeto do meu PC para o meu note.

segue a classe de conexao:

package jdbc;
import java.sql.*;

public class ConBD {

	  public static Connection con = null;
	  public Statement stm;
	  private static final String URL = "jdbc:jtds:sqlserver://SQLNOTE/bdteste";
	  private static final String DRIVER = "net.sourceforge.jtds.jdbc.Driver";
	  private static final String USUARIO = "sa";
	  private static final String SENHA = "123456";
	  
	  public static Connection getConnection() throws SQLException{
	         try{
	             Class.forName(DRIVER);
	             System.out.println("Conectando a BD...");
	             con = DriverManager.getConnection(URL, USUARIO, SENHA);
	             return con;

	         }catch (ClassNotFoundException e) {
	                     System.out.println("Falha ao caregar o drive");

	             throw new SQLException (e.getMessage());
	         }
	     }

	 public Connection desconBD() {
	  	try {
	  	     con.close();
	  	}
	  	catch(Exception e) {
	  		e.printStackTrace();
	  	}
	  	return con;
	  }
}
Carlos_ds_jar

rsaforuns:
Estou so’ copiando o projeto do meu PC para o meu note.

segue a classe de conexao:

package jdbc;
import java.sql.*;

public class ConBD {

	  public static Connection con = null;
	  public Statement stm;
	  private static final String URL = "jdbc:jtds:sqlserver://SQLNOTE/bdteste"; // <-------- OBSERVE ESSA LINHA
	  private static final String DRIVER = "net.sourceforge.jtds.jdbc.Driver";
	  private static final String USUARIO = "sa";
	  private static final String SENHA = "123456";
	  
	  public static Connection getConnection() throws SQLException{
	         try{
	             Class.forName(DRIVER);
	             System.out.println("Conectando a BD...");
	             con = DriverManager.getConnection(URL, USUARIO, SENHA);
	             return con;

	         }catch (ClassNotFoundException e) {
	                     System.out.println("Falha ao caregar o drive");

	             throw new SQLException (e.getMessage());
	         }
	     }

	 public Connection desconBD() {
	  	try {
	  	     con.close();
	  	}
	  	catch(Exception e) {
	  		e.printStackTrace();
	  	}
	  	return con;
	  }
}


Creio que o problema está na linha da URL, preste bastante atenção a sequencia da url que vc deve usar tem que ser essa:

String URL = "jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=nomeDoMeuBanco;namedPipe=true"
Onde 127.0.0.1 vc deve substituir pelo ip da maquina do servidor de banco de dados;

1433 vc substituirá pela porta onde está rodando o serviço do seu servidor de banco de dados;

Em seguida vc vai colocar o nome do seu banco;

Pra terminar vc vai marcar o atributo namePipe como true, que representa o tipo de conexão que vc vai utilizar;

Espero ter ajudado!

R

OK, vou testar.

Criado 15 de setembro de 2010
Ultima resposta 16 de set. de 2010
Respostas 4
Participantes 2