0
をJDBC PreparedStatementを使用してクエリプランを取得し、resultSet.getObjectは、XMLSQLサーバー上なステートメントを使用して
Connection conn = getConnection();
String query = " SET SHOWPLAN_XML on ";
Statement st = conn.createStatement();
boolean execute=st.execute(query);
log.info("execute status {} " , execute);
query = " SELECT ATMPROFILES.TERMID as COLUMNID, ATMPROFILES.TERMID as COLUMNNAME FROM ATMPROFILES (NOLOCK) "
+ " WHERE Authprocessname = 'ATMST' "
+ "ORDER BY ATMPROFILES.TERMID ";
ResultSet rs = st.executeQuery(query);
while(rs.next())
{
Object object = rs.getObject(1);
log.info("Query Plan {} ", object);
}
としてクエリプランを返します。しかし、私はのPreparedStatementを通じて同じことを実行する場合は、クエリ実行計画
Connection conn = getConnection();
String query = " SET SHOWPLAN_XML on ";
PreparedStatement ps = conn.prepareStatement(query);
boolean execute = ps.execute();
log.info("execute status {} " , execute);
query = " SELECT ATMPROFILES.TERMID as COLUMNID, ATMPROFILES.TERMID as COLUMNNAME FROM ATMPROFILES (NOLOCK) "
+ " WHERE Authprocessname = 'ATMST' "
+ "ORDER BY ATMPROFILES.TERMID ";
ps=conn.prepareStatement(query);
execute=ps.execute();
log.info("execute status {} " , execute);
ResultSet rs = ps.getResultSet();
while(rs.next())
{
Object object = rs.getObject(1);
// here it returns selected object
log.info("Query Plan {} ", object);
}
insteadof実際の結果を返します
PreparedStatementを介してこれを達成するためのアイデア。
私はこのイヤラーを試してみました。結果セットは 'ps.getResultSet();'のためにヌルです – vels4j
@ vels4j:どのSQL ServerのバージョンとJDBCドライバを使用していますか?私は自宅でSQL Server 2012、jTDS 1.3.1、あなたとは異なるテーブルを試しました。しかし、私はこれらの違いが重要であるとは思わなかった。私の例の 'ps.getResultSet()'は 'null'ではありませんでした。 –
maven経由でsqljdbc4-4.0.2206.100.jarを使用する – vels4j