0
當引用存儲過程時,客戶端獲取兩個Resultset。與第一一切都很好,但第二由20行,客戶端開發要求該過程返回約1000爲什麼要裁剪結果集?
Connect connectObject = new Connect();
Connection connectionToPool = null;
CallableStatement procedure = null;
ResultSet table = null;
int rowCounter;
SOATO answer = new SOATO();
int counter = 1;
try {
connectObject.init(POOL);
connectionToPool = connectObject.getConnection();
procedure = connectionToPool.prepareCall("{call procedure()}");
procedure.execute();
while (true) {
rowCounter = procedure.getUpdateCount();
if (rowCounter > 0) { // This is update counter
procedure.getMoreResults();
continue;
}
if (rowCounter == 0) { // DDL command or 0 updates
procedure.getMoreResults();
continue;
}
table = procedure.getResultSet(); // If we reached here, we have a
// set of data, or no more results
if (table != null) {
switch (counter) {
case 1: // Area tables
answer.areaDataHandler(table);
counter++;
break;
case 2: // Region tables
answer.regionDataHandler(table);
counter++;
break;
default:
break;
}
procedure.getMoreResults();
continue;
}
break; // No more results
}
} catch (SQLException e) {
e.toString();
} finally {
if (table != null) {
try {
table.close();
} catch (SQLException e) {
e.toString();
}
}
if (procedure != null) {
try {
procedure.close();
} catch (SQLException e) {
e.toString();
}
}
if (connectionToPool != null) {
connectObject.releaseConnection(connectionToPool);
}
}
return answer;
}
regionDataHandler()類似areaDataHandler()
public void areaDataHandler(ResultSet table) throws SQLException {
while (table.next()) {
Area temp = new Area();
temp.setKodobl(table.getInt("kodobl"));
temp.setNameobl(table.getString("nameobl"));
area.add(temp);
}
}
- 數據庫 - MSSQL 2000
- JDBC驅動程序 - jtds1.2.5
PS 請不要嚴格判斷初中和對不起英文不好
您是否手動運行SQL來確認客戶端開發人員「聲稱」什麼? – jtahlborn
爲什麼不使用Eclipse或其他IDE並調試在接到SPROC調用時會發生什麼?你不在這裏展示SPROC,所以很難提供幫助。我建議調試這個,這可能對你有幫助。 –
沒有理由不相信他們,因爲他們對這個系統更感興趣。 我無法使用IDE進行調試(或者我不知道該怎麼做),因爲我無法使用服務器上的SPROC連接到數據庫。 – Nekto