【发布时间】:2014-06-10 15:05:34
【问题描述】:
当提到存储过程时客户端得到两个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
附言 请不要严格判断初级和英语不好感到抱歉
【问题讨论】:
-
您是否手动运行 sql 以确认客户端开发人员“声称”的内容?
-
为什么不使用 Eclipse 或其他 IDE 并调试调用 SPROC 时会发生什么?您没有在此处显示 SPROC,因此很难提供帮助。我建议调试这个,这可能会对你有所帮助。
-
没有理由不相信他们,因为他们对这个系统更感兴趣。我无法使用 IDE 进行调试(或者我不知道该怎么做),因为我无法仅从服务器使用工作场所的 SPROC 连接到数据库。
-
显示调用这个处理代码的代码,我怀疑你忽略了异常。
-
1.一个人没有理由说谎,并不意味着他不会犯错。如果您的客户声称该问题有一些证据或细节 - 验证它。你也可以在那里找到一些有趣的东西。 2. 正如@Mark 建议的那样-检查您的例外情况。使用您拥有的代码,结果集中的 null int 和
setKodobl采用原始参数这样愚蠢的东西会过早地终止此过程。另外 - 你是认真地打电话给e.toString()吗?!?!这到底是怎么回事?
标签: java jdbc resultset jtds mssql-jdbc