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 historic
和id product
,但我想知道我的其他表格中的产品的名称和价格"产品"要添加到我的Jlist,我可以使用两个选择吗?谢谢。
答案 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);
}
答案 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