java无法拦截“的SQLException”;光标位置处的操作无效";错误
我有一个例程,从文本字段中获取一段文本。我使用它来搜索数据库中的任何匹配项。如果找到一个或多个匹配项,则它可以正常工作。但是,如果未找到匹配项,则会得到预期的“光标位置处的操作无效”SQLException 问题是我想截获该异常并生成自己的消息。但我似乎做不到 下面的代码片段是代码示例,png是结果的结果图像 //请注意,代码使用不同的字段进行查询,但结果是相同的java无法拦截“的SQLException”;光标位置处的操作无效";错误,java,Java,我有一个例程,从文本字段中获取一段文本。我使用它来搜索数据库中的任何匹配项。如果找到一个或多个匹配项,则它可以正常工作。但是,如果未找到匹配项,则会得到预期的“光标位置处的操作无效”SQLException 问题是我想截获该异常并生成自己的消息。但我似乎做不到 下面的代码片段是代码示例,png是结果的结果图像 //请注意,代码使用不同的字段进行查询,但结果是相同的 private void btnFnidNextActionPerformed(java.awt.event.ActionEvent
private void btnFnidNextActionPerformed(java.awt.event.ActionEvent evt) {
getQueryFields();
String CMD = "SELECT * FROM TREE_DATABASE WHERE LCASE(first_name) LIKE LCASE('%"+q_first_name+"%') "; // q_first_name is query String!
try {
rs = stmt.executeQuery(CMD);
rs.next();
getResultSet();
setTextFields();
}
//
// Setting breakpoints next two lines and never get a break!
//
catch (SQLException err) {
JOptionPane.showMessageDialog(tree.this, err.getMessage());
}
可能需要更换
catch (SQLException err) {
JOptionPane.showMessageDialog(tree.this, err.getMessage());
}
与
即使有点晚。。。甚至有点不清楚什么是
rs
;我假设它返回true
或false
。当您已经到达记录集的末尾时,无法调用getResultSet()
。对于这种单数形式,您可能希望限制1
…并可能使用类似的内容:
if(rs.next()) {
getResultSet();
setTextFields();
}
或者,如果返回多个记录:
while(rs.next()) { ... }
它仍然会产生相同的结果——我尝试了这个选项。正如我所说,我把breakporints放在一个catch中,它似乎从来没有调用catch子句!您单击屏幕截图中的哪个按钮接收此消息?是“执行”按钮吗?是的-我从getQueryFields返回的变量中获取文本,当按下执行按钮时,它被处理。我发现问题出在rs.next()上。如果rs未返回结果,则rs.next尝试单步移动到不存在的光标位置。所以我绕过了错误,但这仍然不能回答真正的问题,为什么JAVA不能处理“CATCH”Claus中的异常呢???
while(rs.next()) { ... }