据说除非你关闭它,否则Resultset对象或preparedstatemt对象仍然存在。因此,可以在创建它的大括号之外调用它。
像
这样的东西@angular/cli: 1.0.0-rc.1
node: 7.7.2
os: darwin x64
@angular/common: 2.4.8
@angular/compiler: 2.4.8
@angular/core: 2.4.8
@angular/forms: 2.4.8
@angular/http: 2.4.8
@angular/platform-browser: 2.4.8
@angular/platform-browser-dynamic: 2.4.8
@angular/router: 3.4.8
@angular/cli: 1.0.0-rc.1
如果没有,是否有办法做到这一点,首先我根据特定条件创建PST,然后通过一个通用语法使用它?
答案 0 :(得分:1)
不是你不能使用:
您的代码应如下所示
PreparedStatement pst = null;//declaration outside your if block
if (output.equals("A")) {
pst = connextion.prepareStatement("Query1");//initialization inside your if block
} else if (output.equals("B")) {
pst = connextion.prepareStatement("Query2");//or initialization inside your else
}
pst.setString(1, qty1);
pst.setInt(2, qty2);
答案 1 :(得分:0)
除YCF_Ls答案外,您只需在创建PreparedStatement
之前选择查询字符串:
String query = "DefaultQuery"; // you have no "final" else,
// therefore you could pass the if/else cascade
// without initializing the query reference.
// so we have to give a default value here.
if (output.equals("A")) {
query= "Query1";
} else if (output.equals("B")) {
query= "Query2";
}
PreparedStatement pst = connextion.prepareStatement(query);
pst.setString(1, qty1);
pst.setInt(2, qty2);
答案 2 :(得分:0)
只需调整您的业务逻辑。以下是我的建议。
String SQL = null;
if (output.equals("A")) {
SQL = "Query1";
} else if (output.equals("B")) {
SQL = "Query2";
}
PreparedStatement pst = connextion.prepareStatement(SQL);
pst.setString(1, qty1);
pst.setInt(2, qty2);