Java PreparedStatement自动生成密钥SQLException
我正在尝试从oracle数据库中的SQL Insert preparedstatement获取自动生成的密钥。我试着模仿我能找到的每一个例子,我总是从.executeUpdate()调用中得到一个SQLException。我确信,在prepareStatement()调用中没有第二个参数的情况下,这可以正常工作,因此它不是SQL本身。请问我做错了什么 我得到一个错误: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
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再次运行-您的连接池超时。您需要将其添加到问题中(特别是当你编辑你的问题而不是试图在评论中阅读它时,你可以格式化这类内容)。这种情况已经发生过多次。重新运行似乎没有帮助。