2012-02-23 9 views
1

これをWAS 5からWAS 7に移行していますが、なぜこれが現在問題を引き起こしているのかがわかりません。 executeQuery()行は、ResultSetを返さないことを示すSQLExceptionをスローしています。 WASの人生の中で何が変わったのか誰にも分かりません。これはJDBCのアップグレード、またはJREのことですか?私は周りを探索しましたが、私は本当に何を探しているのかよくわからないので、私の検索は未実績です。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(); 

TIA

+0

実際に返されるクエリは何ですか?また、SQLExceptionの詳細は何ですか?問題についてのヒントを与えるコードと状態があるはずです... – BenCole

答えて

1

あなたはそこに2つのクエリを持っています。最初のものはexecuteUpdate()で実行し、次にexecuteQuery()で2番目のものを実行する必要があります。

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); 

私はどこかの深さでは、ちょうどinsert文のような上記のルックスだったので、それが結果セットをスキップすると思われます。

関連する問題