MS SQL Server 2005 JDBC Driver 의 알려진 이슈
Statement object를 이용하여 쿼리 수행시 '서버에서 트랜잭션을 재개하지 못했습니다' 오류가 발생과 관련된
MS SQL Server 2005 JDBC Driver 의 알려진 이슈가 있습니다. (JDBC 1.2에서 FIX될 예정임)
이에 우선적으로 아래 Workaround로 문제가 해결되는지 체크가 필요할 것으로 보입니다.
JDBC 1.1에서 위 문제를 피하시려면 다음의 WORKAROUND를 사용하시면 됩니다.
1) Statement 대신 PreparedStatement 사용
또는,
2) Statement.getMoreResults() 및 Statement.getUpdateCount() 를 이용해 모든 Recordset이 처리되도록 코드 수정
sample code는 다음과 같습니다.
Statement stmt = conn.createStatement();
stmt.execute("exec testProcReturns");
int resultSetNum = 0;
for (boolean resultsEndOrUpdateCount = false;
;
resultsEndOrUpdateCount = !stmt.getMoreResults())
{
if (resultsEndOrUpdateCount)
{
int updateCount = stmt.getUpdateCount();
if (-1 == updateCount) // end of results
break;
System.out.println("Update count is: " +
updateCount);
}
else // result is ResultSet
{
ResultSet rs = stmt.getResultSet();
System.out.println("Found a
result set");
while (rs.next())
{
System.out.println("ResultSetValue: " + rs.getString(1));
}
rs.close();
}
}
stmt.close();
감사합니다
박 상 준