SQLException

4 respostas
reinaldo558

Olá!

Estou tentando fazer um Insert que não está funcionando.
Estou utilizando um DAO, o ultimo método que coloquei neste DAO foi um insert, que está exatamente com a mesma sintaxe das outras dezenas de inserts deste DAO, mas não funciona! Fica falando que não vai mais ler o soquete, que soquete é esse? Deve estar escrito em arabe pro java não conseguir ler.

public void cadastrarEmpresaGrupo(EmpresaGrupoForm empresa) throws SQLException{
			 
			Connection conn = null;
	        Statement stmt = null;
	        StringBuffer sql = new StringBuffer();
	        PreparedStatement ps = null;
	    
	        try{
	        	sql.append("INSERT INTO TBOD_PROPOSTA_EMPRESA_ODONTO VALUES ( " +
	        			"( SELECT MAX(CD_EMPRESA_GRUPO + 1) FROM TBOD_PROPOSTA_EMPRESA_ODONTO), " + // CD_EMPRESA_GRUPO
	        			"'?', " + //NOME DA EMPRESA
	        			"'?', " + //STATUS DA EMPRESA A-ATIVO / I-INATIVO
	        			"'?') "); //OBSERVAÇÕES
	        	
	        	conn = DBConnection.getConnection();
	        	ps = conn.prepareStatement(sql.toString());
	            ps.setString(1, empresa.getDs_empresa());
	            ps.setString(2, empresa.getDs_status());
	            ps.setString(3, empresa.getDs_obs());
	            ps.execute();
	            //conn.commit();
	        }
	        catch(SQLException e){
	        	e.printStackTrace();
	        }finally {
	            try {
	                if (stmt != null) {
	                    stmt.close();
	                    stmt = null;
	                }
	                if (conn != null) {
	                	conn.rollback();
	                    conn.close();
	                    conn = null;
	                }
	                if (ps != null){
	                	ps.close();
	                	ps = null;
	                }
	            } catch (SQLException f) {
	                f.printStackTrace();
	            }
	        }
	  	}

E essa é a Exception, ou melhor SQLException.

java.sql.SQLException: Não serão lidos mais dados do soquete
	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114)
	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:156)
	at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:803)
	at oracle.jdbc.ttc7.MAREngine.unmarshalUB1(MAREngine.java:731)
	at oracle.jdbc.ttc7.MAREngine.unmarshalSB1(MAREngine.java:690)
	at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:372)
	at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1311)
	at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:738)
	at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:1313)
	at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1232)
	at oracle.jdbc.driver.OracleStatement.doExecuteWithBatch(OracleStatement.java:1353)
	at oracle.jdbc.driver.OracleStatement.doExecute(OracleStatement.java:1760)
	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1805)
	at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:322)
	at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:366)
	at com.odontoprev.intranet.dao.PropostaComercialDAO.cadastrarEmpresaGrupo(PropostaComercialDAO.java:14623)
	at com.odontoprev.intranet.bo.GerenciadorPropostaComercial.cadastrarEmpresaGrupo(GerenciadorPropostaComercial.java:1815)
	at com.odontoprev.intranet.action.CadastrarEmpresasGrupoOdontoprevAction.execute(CadastrarEmpresasGrupoOdontoprevAction.java:27)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:480)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1420)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:520)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:86)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at com.odontoprev.intranet.security.ChecarAcessoFilter.doFilter(ChecarAcessoFilter.java:74)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
	at java.lang.Thread.run(Thread.java:534)

O que eu posso fazer?

4 Respostas

T

Use “executeUpdate”, não “execute”.

G

Tenta colocar o “?” sem as aspas simples, coloca direto na string. Talvez seja isso o problema.

T

Bingo! Deve ser isso mesmo.

reinaldo558

Putz, não acredito que tropecei nesse grão de areia!

Era isso mesmo, o ps.setString(), troca automaticamente o ? pela String mencionada, e já manda essa string entre aspas simples, desta forma o input estava saindo com dois pares de aspas simples.

insert into tabela values (’‘Alguma coisa’’, ‘‘Alguma outra coisa’’, ‘‘Mais alguma coisa’’)

ai não funciona mesmo né!

Muito obrigado pela ajuda!

Criado 7 de fevereiro de 2008
Ultima resposta 7 de fev. de 2008
Respostas 4
Participantes 3