SQLException

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.

[code]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();
            }
        }
  	}	

[/code]

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?

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

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

Bingo! Deve ser isso mesmo.

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!