我可以尝试两个选择吗?

时间:2015-05-25 10:29:21

标签: java

try {
    Connection lig = DriverManager.getConnection(
            "jdbc:mysql://localhost/gym", "root", "0000");
    PreparedStatement inst = lig
            .prepareStatement("SELECT * FROM produtos_has_historico WHERE Produtos_idProdutos AND Historico_idHistorico");


    ResultSet a = inst.executeQuery();
    while (a.next()){

        DefaultListModel model = new DefaultListModel();
        model.addElement(a);


    }               
} catch( Exception e ){}

在这个选择中,我得到了id historicid product,但我想知道我的其他表格中的产品的名称和价格"产品"要添加到我的Jlist,我可以使用两个选择吗?谢谢。

5 个答案:

答案 0 :(得分:2)

在一个try-catch块中有两个选择不是问题。

答案 1 :(得分:1)

如果您想以相同的方式处理生成的异常,无论它发生在何处,那么我在同一try块中包含多个语句时看不到问题。

答案 2 :(得分:0)

是的,可以将多个可能失败的调用放入单个try/catch块中 - 事实上,这是我们拥有 try/catch块的重要原因(和一般的异常处理),将处理异常事物(失败)的代码移出主代码,因此更容易理解主代码。

比较这些伪代码

result = doThis();
if (result != success) {
    handleTheFailure(result)
} else {
    result = doThat();
    if (result != success) {
        handleThefailure(result);
    } else {
        result = doTheOther();
        if (result != success) {
            handleTheFailure(result);
        }
    }
}

VS

try {
    doThis();
    doThat();
    doTheOther();
}
catch (failure) {
    handleFailure(failure);
}

更多the Java tutorial on exceptions

答案 3 :(得分:0)

没问题。我还建议您使用try-with-resources,并更具体地说明您要捕获的异常:

    try (Connection conn = DriverManager.getConnection("...")) {

        PreparedStatement ps1 = conn.prepareStatement("...");
        try (ResultSet rs1 = ps1.executeQuery()) {
            /* Parse first result */
        }

        PreparedStatement ps2 = conn.prepareStatement("...");
        try (ResultSet rs2 = ps2.executeQuery()) {
            /* Parse second result */
        }

    } catch (SQLException ex) {
        for (Throwable t : ex) {
            t.printStackTrace();
        }
    }

答案 4 :(得分:0)

您可以编写一个包含连接的SQL查询,而不是选择两个选项。

如果表中有公共列,则可以执行连接。

然后,您可以使用join编写查询,然后使用相同的代码执行操作,您可以获取所需的所有值。

对于SQL连接基本 - 您可以访问此站点 - http://www.w3schools.com/sql/sql_join.asp