2012-02-23 2 views
1

Мы переносим это с WAS 5 на WAS 7, и мы в тупике, почему это вызывает проблемы. Строка executeQuery() бросает SQLException, говоря, что он не возвращает ResultSet. Кто-нибудь знает, что изменилось в течение жизни WAS, что больше не позволяет этому работать? Это обновление JDBC или JRE? Я googled вокруг, но я действительно не уверен, что я должен искать, поэтому мои поиски были бесплодны.JDBC Не возвращается ResultSet

 query = "insert into ST_Users "; 
     query += "(ST_U_First_Name, ST_U_Middle_Name, 
           ST_U_Last_Name, ST_U_Facility_Name, 
           ST_U_Last_Trans_ID, ST_U_Last_Trans_Time) "; 
     query += "values (?,?,?,?,?,?)"; 
     query += ";select SCOPE_IDENTITY() as UserId"; 

     pStmt = tokenConn.prepareStatement(query); 
     pStmt.setString(1, user.getFirstName()); 
     pStmt.setString(2, user.getMiddleName()); 
     pStmt.setString(3, user.getLastName()); 
     pStmt.setString(4, user.getFacilityName()); 
     pStmt.setString(5, sysId.getSystemId()); 
     pStmt.setDate(6, new java.sql.Date(Calendar.getInstance() 
             .getTime().getTime())); 

     resultSet = pStmt.executeQuery(); 

ТИА

+0

Каков запрос, фактически возвращающийся? Кроме того, каковы детали SQLException? Должен быть код и состояние, которое может дать подсказки относительно проблемы ... – BenCole

ответ

1

У вас есть два запроса там. Вы должны выполнить первый с executeUpdate(), а затем выполнить второй с executeQuery().

1

Я понимаю, что это не прямой ответ, но я думаю, что вы могли бы сделать то же самое (т. Е. Вернуть сгенерированный ключ), используя сгенерированные ключевые функции JDBC api.

query = "insert into ST_Users "; 
    query += "(ST_U_First_Name, ST_U_Middle_Name, 
          ST_U_Last_Name, ST_U_Facility_Name, 
          ST_U_Last_Trans_ID, ST_U_Last_Trans_Time) "; 
    query += "values (?,?,?,?,?,?)"; 

    pStmt = tokenConn.prepareStatement(query); 
    pStmt.setString(1, user.getFirstName()); 
    pStmt.setString(2, user.getMiddleName()); 
    pStmt.setString(3, user.getLastName()); 
    pStmt.setString(4, user.getFacilityName()); 
    pStmt.setString(5, sysId.getSystemId()); 
    pStmt.setDate(6, new java.sql.Date(Calendar.getInstance() 
            .getTime().getTime())); 

    pStmt.executeUpdate(Statement.RETURN_GENERATED_KEYS); 
    ResultSet key = pStmt.getGeneratedKeys(); 

    key.next(); // should always be true ... you should throw an exception if it isn't 
    long generatedKey = key.getLong(1); 

Я подозреваю, что где-то в глубине было выше, выглядит как только оператор вставки, поэтому он пропускает набор результатов.

 Смежные вопросы

  • Нет связанных вопросов^_^