Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java无法拦截“的SQLException”;光标位置处的操作无效";错误_Java - Fatal编程技术网

java无法拦截“的SQLException”;光标位置处的操作无效";错误

java无法拦截“的SQLException”;光标位置处的操作无效";错误,java,Java,我有一个例程,从文本字段中获取一段文本。我使用它来搜索数据库中的任何匹配项。如果找到一个或多个匹配项,则它可以正常工作。但是,如果未找到匹配项,则会得到预期的“光标位置处的操作无效”SQLException 问题是我想截获该异常并生成自己的消息。但我似乎做不到 下面的代码片段是代码示例,png是结果的结果图像 //请注意,代码使用不同的字段进行查询,但结果是相同的 private void btnFnidNextActionPerformed(java.awt.event.ActionEvent

我有一个例程,从文本字段中获取一段文本。我使用它来搜索数据库中的任何匹配项。如果找到一个或多个匹配项,则它可以正常工作。但是,如果未找到匹配项,则会得到预期的“光标位置处的操作无效”SQLException

问题是我想截获该异常并生成自己的消息。但我似乎做不到

下面的代码片段是代码示例,png是结果的结果图像

//请注意,代码使用不同的字段进行查询,但结果是相同的

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()) { ... }