Java PreparedStatement自动生成密钥SQLException

Java PreparedStatement自动生成密钥SQLException,java,sql,oracle,prepared-statement,sqlexception,Java,Sql,Oracle,Prepared Statement,Sqlexception,我正在尝试从oracle数据库中的SQL Insert preparedstatement获取自动生成的密钥。我试着模仿我能找到的每一个例子,我总是从.executeUpdate()调用中得到一个SQLException。我确信,在prepareStatement()调用中没有第二个参数的情况下,这可以正常工作,因此它不是SQL本身。请问我做错了什么 我得到一个错误: I seem to be getting this: [1/19/15 0:50:50:462 EST] 00000054 C

我正在尝试从oracle数据库中的SQL Insert preparedstatement获取自动生成的密钥。我试着模仿我能找到的每一个例子,我总是从.executeUpdate()调用中得到一个SQLException。我确信,在prepareStatement()调用中没有第二个参数的情况下,这可以正常工作,因此它不是SQL本身。请问我做错了什么

我得到一个错误:

I seem to be getting this: [1/19/15 0:50:50:462 EST] 00000054 
ConnectionEve A J2CA0056I: The Connection Manager received a fatal 
connection error from the Resource Adapter for resource[extracted]. The 
exception which was received is 
com.ibm.websphere.ce.cm.StaleConnectionException: Protocol 
violation:java.sql.SQLException: Protocol violation
代码是这样的

    Connection conSOX = AggIOTraceUtil.getJNDISOXConnection(JNDIConn);
    PreparedStatement preparedStatement = null;
    String sii_agg_id = null;

            if (conSOX != null)
            {                       
                preparedStatement = conSOX.prepareStatement(SII_SOX_APP_QUERY, new String[] { "SII_TASK_AGG_STATUS_ID" });
                preparedStatement.setObject(1, traceObject.getTaskName());
                preparedStatement.setObject(2, traceObject.getTaskType());
                preparedStatement.setObject(3, traceObject.getSpTaskStartedDate());
等等等等

                preparedStatement.executeUpdate();                  

                    // Get the auto generated aggregation ID
                    ResultSet generatedKeys = preparedStatement.getGeneratedKeys();
                    if (null != generatedKeys && generatedKeys.next()) {
                        log.error("Hello");
                        sii_agg_id = generatedKeys.getString(1);

                        log.error("SII AGG ID  = " + sii_agg_id);
我的SQL查询是:

private static final String SII_SOX_APP_QUERY = "insert into 
SII_TASK_AGG_STATUS(SII_TASK_AGG_STATUS_ID, DATA_AGG_TASK_NAME, 
"+ "TASK_TYPE, TASK_STARTED_DATE, TASK_COMPLETED_DATE, TASK_LAUNCHED_DATE,
APP_SCANNED, "+ "EXTRA_ENTITLEMENT_CHANGES, IDENTITIES_UPDATED, 
LINKS_OR_GROUPS_DELETED, GROUPS_UPDATED, "  + "IDENTITIES_CREATED, 
GROUPS_CREATED, TASK_MESSAGE, COLUMN_NAMES, DELIMITER, LINE_SKIPPED, 
"+ "LOGICAL_APP_NAME, IS_PRIMARY_TIER, AGG_STATUS, DATA_AGG_AUDIT_ID, 
SII_TASK_STATUS_ID" + ")
values(SII_TASK_AGG_STATUS_SEQ.NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?)";

您收到的错误是什么?我似乎收到了以下消息:[1/19/15 0:50:50:462 EST]00000054 Connectionive A J2CA0056I:连接管理器从资源适配器接收到资源[extracted]的致命连接错误。收到的异常是com.ibm.websphere.ce.cm.StaleConnectionException:Protocol violation:java.sql.SQLException:Protocol violation再次运行-您的连接池超时。您需要将其添加到问题中(特别是当你编辑你的问题而不是试图在评论中阅读它时,你可以格式化这类内容)。这种情况已经发生过多次。重新运行似乎没有帮助。