【发布时间】:2020-08-14 12:42:40
【问题描述】:
我有一个不为空的结果集。它包含 6 列。但是如果我想使用循环,什么都不会发生。
如果我在 SQL Server Management Studio 中使用与 Java 代码中相同的参数调用存储过程,我会得到一个结果:
几分钟前一切正常
// That doesn't work because I can't get into the loop
if (con != null) {
String an_id = "bkoubik";
String AS_Aufruf = "exec BfV_Web.sp_Anwender_Start\n@AnwenderID = ?";
try {
PreparedStatement STMT = con.prepareStatement(AS_Aufruf);
STMT.setString(1, an_id);
ResultSet rs = STMT.executeQuery();
//THIS IF STATEMENT IS NOT ENTERING, SO WHY THEN THE WHILE LOOP
IS NOT WORKING ?
if (!rs.next() ) {
System.out.println("no data");
}
ResultSetMetaData meta = rs.getMetaData();
int intRS = meta.getColumnCount();
//THE LOOP IS NOT ENTERING
while (rs.next()) {
[...]
}
【问题讨论】:
-
您是否尝试在 while 循环之前、内部和之后添加一个简单的打印语句?
-
请阅读“如何创建minimal reproducible example”。然后使用edit 链接改进您的问题(不要通过 cmets 添加更多信息)。您的代码也很重要。并提示:不要使用图像。而是:使用打印语句将相关信息打印为文本,并将其放入您的问题中。作为格式良好的文本。
-
rs.next()迭代行,而不是列。而且您似乎在掩盖您的代码可能在做什么。 -
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀! -
请不要在您的问题中包含图片,因为文字会更好或更好。
标签: java