java无法拦截SQLException,因为“光标位置无效操作”错误

时间:2015-01-20 21:31:40

标签: java

我有一个例程,可以从文本字段中获取一段文本。我用它来搜索数据库中的任何匹配项。如果一个或多个匹配发现它可以正常工作。然而,它没有匹配被发现它在光标位置得到预期的"无效操作"的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());
    }       

Result of function on screen

2 个答案:

答案 0 :(得分:2)

或许替换

catch (SQLException err) {
    JOptionPane.showMessageDialog(tree.this, err.getMessage());
}

catch (SQLException err) {
    JOptionPane.showMessageDialog(tree.this, "Your personal error message here");
}

答案 1 :(得分:0)

即使有点晚了......有点不清楚rs甚至是什么;我只是假设它返回 truefalse。当已经到达记录集的末尾时,您无法调用 getResultSet()。对于这样的单数形式,您可能想要 LIMIT 1 ...并且可能使用类似的东西:

if(rs.next()) {
    getResultSet();
    setTextFields();
}

或者,如果返回多个记录:

while(rs.next()) { ... }